За последние 24 часа нас посетили 18408 программистов и 1624 робота. Сейчас ищут 1046 программистов ...

NetBeans - Пространство имен не соответствует текущей структуре каталогов.

Тема в разделе "IDE", создана пользователем Hyacinthus, 25 дек 2021.

  1. Hyacinthus

    Hyacinthus Новичок

    С нами с:
    13 мар 2021
    Сообщения:
    15
    Симпатии:
    0
    Вчера и сегодня с утра всё было нормально. Но в какойто момент, я не заметил когда, NetBeans начел жаловатся -"Namespace declaration name doesn't correspond to current directory structure". Везде, даже в файлах созданые Composer-ом.

    Моя система, если что:
    Manjaro Linux
    KDE Plasma Version: 5.23.3
    KDE Frameworks Version: 5.88.0
    Qt Version: 5.15.2
    Kernel Version: 5.10.79-1-MANJARO (64-bit)

    XAMPP 8.1.0-0
    - Apache 2.4.51
    - MariaDB 10.4.22
    - OpenSSL 1.1.1l
    - PEAR 1.7.1
    - PHP 8.1.0
    - phpMyAdmin 5.1.1

    Apache NetBeans IDE 12.4
    Java: 17.0.1; OpenJDK 64-Bit Server VM 17.0.1+12
    Runtime: OpenJDK Runtime Environment 17.0.1+12

    В Tools> Options> Editor> Hints опции стоят на PSR-4.

    Из возможных причин -
    Я сегодня внёс изминения в composer.json
    PHP:
    1. "name": "hgpd/cryptoriot",
    2. "autoload": {"psr-4": {"hgpd21\\": "vendor/hgpd21/core", "app\\": "app"}},
    3. "require": {}
    Добавил core в "vendor/hgpd21/core"
    И произвёл composer dump-autoload в консоле.

    Может кто знает как исправить. А то я подумываю снести проект на фиг и переписать всё снуля...
     

    Вложения:

  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.105
    Симпатии:
    1.243
    Адрес:
    там-сям
    composer складывает в папку vendor сторонние пакеты. Любое ручное вмешательство выходит боком. Поэтому вопрос: зачем тебе понадобилось добавлять что-то про autoload стороннего пакета? Он сам должен заботиться об этом.
    Если это твой локальный пакет, то тебе надо его опубликовать на packagist.org чтобы он попадал в vendor. Иначе ему там не место.
     
    MouseZver нравится это.
  3. Hyacinthus

    Hyacinthus Новичок

    С нами с:
    13 мар 2021
    Сообщения:
    15
    Симпатии:
    0
    В общем история болезни, по шагам:
    *открываю доступ к папке /usr/local/bin

    Код (Text):
    1. sudo chmod 777 /usr/local/bin
    Открываю терминал в этой папке и ставлю composer

    PHP:
    1. php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    2. php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    3. php composer-setup.php
    4. php -r "unlink('composer-setup.php');"
    В терминале проверяю запуск командой
    Код (Text):
    1. composer.phar
    Получаю

    PHP:
    1.  ______
    2.   / ____/___  ____ ___  ____  ____  ________  _____
    3. / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
    4. / /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
    5. \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
    6.                     /_/
    7. Composer version 2.2.1 2021-12-22 22:21:31
    и так далее...

    Тоесть, эта часть должна быть нормальной.
    Далее.
    Запускаю XAMPP, запускаю NetBeans, создаю новый проект.
    [​IMG]
    [​IMG]
    [​IMG]
    На этом шаге ни чего не выбираю. Тут у меня сомнения может мне надо установить Symfony? У меня Symfony не установлина.
    [​IMG]
    Далее. Тут, я так понимаю, можно указать зависимости которые будут прописаны в "require": {} в composer.json. Это я тоже пропускаю.
    [​IMG]
    Создаю одну папку app.
    [​IMG]
    Создаю composer.json
    [​IMG]
    [​IMG]
    Пишу в composer.json следующий код:
    [​IMG]
    PHP:
    1. {
    2.     "name": "hgpd/cryptoriot",
    3. "autoload": {"psr-4": {"app\\": "app"}},
    4. "require": {}
    5. }
    Открываю терминал в NetBeans через Tools> Open in Terminal
    [​IMG]
    Пишем команду
    Код (Text):
    1. composer.phar install
    Получаем:
    [​IMG]
    Код (Text):
    1. [htdocs]$ composer.phar install                                                                                                        
    2. No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
    3. Loading composer repositories with package information
    4. Updating dependencies
    5. Nothing to modify in lock file
    6. Writing lock file
    7. Installing dependencies from lock file (including require-dev)
    8. Nothing to install, update or remove
    9. Generating autoload files
    10. [htdocs]$
    Как мы видим composer.lock создан vendor саздана
    Открываем ClassLoader.php папке vendor/composer
    И что мы видим?.. - Пространство имен не соответствует текущей структуре каталогов.
    [​IMG]

    Где я накасячил?
    --- Добавлено ---
    скрины можно скачать с моего гогла тут
     
  4. Hyacinthus

    Hyacinthus Новичок

    С нами с:
    13 мар 2021
    Сообщения:
    15
    Симпатии:
    0
    Дополнение - Подсказка выдала следующее:

    Enable HTML error checking for all files of the text/x-php5 mimetype
    Change project default to HTML 3.2
    Change project default to HTML 4.0 Strict
    Change project default to HTML 4.0 Transitional
    Change project default to HTML 4.0 Frameset
    Change project default to HTML 4.01 Strict
    Change project default to HTML 4.01 Transitional
    Change project default to HTML 4.01 Frameset
    Change project default to HTML 5
    Add declare(strict_type=1)
    Customize Hints in Options Dialog
     
  5. Hyacinthus

    Hyacinthus Новичок

    С нами с:
    13 мар 2021
    Сообщения:
    15
    Симпатии:
    0
    Проблема решена. Поставил visual studio, netbeans удалил. Проблемы с пространством имён нет. В коде composer есть одна ошибка Undefined function в шести местах. В связи с чем хочу спросить совет - мне стоит "причёсывать" код composer устраняя эти ошибки, или не стоит?
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.105
    Симпатии:
    1.243
    Адрес:
    там-сям
    причесывать код composer? нет, не стоит. стоит проанализировать почему ошибка возникает и найти решение (или игнорировать).
    --- Добавлено ---
    трогать что-либо внутри папки vendor нельзя. ты управляешь этим хозяйствов ТОЛЬКО через composer и его конфигурацию.
     
    Hyacinthus нравится это.
  7. Hyacinthus

    Hyacinthus Новичок

    С нами с:
    13 мар 2021
    Сообщения:
    15
    Симпатии:
    0
    Я пока не разобрался до конца, но направление: https://www.php.net/manual/ru/book.apcu.php
    И: https://getcomposer.org/doc/articles/autoloader-optimization.md

    И вот что выдаёт редактор по одному файлу, в остальных двух всё тоже:
    PHP:
    1. [{
    2.     "resource": "/opt/lampp/htdocs/vendor/composer/ClassLoader.php",
    3.     "owner": "_generated_diagnostic_collection_name_#0",
    4.     "code": "1010",
    5.     "severity": 8,
    6.     "message": "Undefined function 'Composer\\Autoload\\apcu_fetch'.",
    7.     "source": "intelephense",
    8.     "startLineNumber": 453,
    9.     "startColumn": 21,
    10.     "endLineNumber": 453,
    11.     "endColumn": 31
    12. },{
    13.     "resource": "/opt/lampp/htdocs/vendor/composer/ClassLoader.php",
    14.     "owner": "_generated_diagnostic_collection_name_#0",
    15.     "code": "1008",
    16.     "severity": 8,
    17.     "message": "Undefined variable '$hit'.",
    18.     "source": "intelephense",
    19.     "startLineNumber": 453,
    20.     "startColumn": 58,
    21.     "endLineNumber": 453,
    22.     "endColumn": 62
    23. },{
    24.     "resource": "/opt/lampp/htdocs/vendor/composer/ClassLoader.php",
    25.     "owner": "_generated_diagnostic_collection_name_#0",
    26.     "code": "1008",
    27.     "severity": 8,
    28.     "message": "Undefined variable '$hit'.",
    29.     "source": "intelephense",
    30.     "startLineNumber": 454,
    31.     "startColumn": 17,
    32.     "endLineNumber": 454,
    33.     "endColumn": 21
    34. },{
    35.     "resource": "/opt/lampp/htdocs/vendor/composer/ClassLoader.php",
    36.     "owner": "_generated_diagnostic_collection_name_#0",
    37.     "code": "1010",
    38.     "severity": 8,
    39.     "message": "Undefined function 'Composer\\Autoload\\apcu_add'.",
    40.     "source": "intelephense",
    41.     "startLineNumber": 467,
    42.     "startColumn": 13,
    43.     "endLineNumber": 467,
    44.     "endColumn": 21
    45. }]
     
  8. Hyacinthus

    Hyacinthus Новичок

    С нами с:
    13 мар 2021
    Сообщения:
    15
    Симпатии:
    0
    Как говорится - ту самван хум ит кэн консерн:
    Поставил Eclipse. Ни каких проблем,!- не с пространством имён, ни с APCu, ни с чем либо ещё...
    Все танцуют и поют Кумбая..!
    Зе Энд. :rolleyes: