Netbeans не удалось найти файл include
'Помощь при работе с кодом' - это набор компонентов IDE, упрощающих навигацию и редактирование исходного кода. Для проектов C/C с существующими исходными файлами и проектов C/C с существующим двоичным кодом можно указать способ анализа кода, что позволит включить функции 'Помощь при работе с кодом' в IDE.
Обратите внимание, что рекомендации, приведенные в этой статье, относятся в основном к проектам, созданным на основе существующего исходного кода или на основе существующего двоичного кода. Для проектов, созданных и управляемых в конфигурации IDE 'Помощь при работе с кодом', выполнение этих рекомендаций не обязательно.
Решение
Убедитесь, что все файлы вашего проекта находятся в пути включения проекта (щелкните правой кнопкой мыши проект -> свойства -> путь включения). Обычно существует только «глобальный путь включения», который вы настраиваете в настройках NetBeans (например, чтобы указать каталог PEAR). Добавьте все каталоги, которые содержат исходный код, для которого вы хотите выполнить автозаполнение, к этому пути включения. Подсказка: этот путь включения не имеет ничего общего с include_path, используемым в самом PHP.
Создание файла заголовка библиотеки в машинном коде
В этом разделе будет использоваться javah – средство Java, используемое для создания заголовка на языке C из класса Java.
В окне терминала перейдите к каталогу NetBeansProjects .
Введите следующее значение:
В каталоге NetBeansProjects будет создан файл заголовка на языке C JNIDemoJava.h . Этот файл требуется для того, чтобы обеспечить предоставление правильного объявления функции для реализации метода nativePrint() в машинном коде. Он понадобится позже при создании части приложения на языке C.
Переключение обратно в окно IDE NetBeans.
Заключение
В этом упражнении вы создали новый проект приложения Java, указали его местоположение и определили пакет и имя главного класса этого проекта. Вы также добавили новый метод к главному классу и пометили его как метод с реализацией в машинном коде. В завершение вы создали файл заголовка на языке C, который понадобится позже при компиляции библиотеки в машинный код.
Настройка нового проекта динамической библиотеки на языке C/C++
В этом разделе рассматривается процесс создания части приложения в машинном коде. Вы создадите проект динамической библиотеки на языке C++ и настроите его для сборки кода JNI.
После настройки проекта вы создадите реализацию для метода в машинном коде, который был объявлен ранее в части приложения на языке Java.
В поле "Имя проекта" введите JNIDemoCdl .
В поле "Местоположение проекта" укажите то же местоположение, которое было использовано для проекта приложения Java – NetBeansProjects . Это местоположение должно отобразиться по умолчанию.
Оставьте данные во всех остальных полях без изменения и нажмите 'Готово'.
В среде IDE будет создана папка проекта NetBeansProjects/JNIDemoCdl .
Использование гиперссылок для навигации между вызовами и объявлениями
Навигация по гиперссылке позволяет переходить от вызова функции, класса, метода, переменной или константы к их объявлению. Чтобы использовать гиперссылки, выполните одно из следующих действий.
Наведите курсор мыши на класс, метод, переменную или константу при нажатой кнопке Ctrl. Гиперссылка появляется вместе с подсказкой с информацией об элементе. Нажмите на гиперссылку, и редактор перейдет к объявлению. Нажмите сочетание клавиш Alt + Left, чтобы вернуться к вызову.
Наведите курсор мыши на идентификатор и нажмите сочетание клавиш Ctrl + B. Редактор переходит к объявлению.
Нажмите сочетание клавиш Alt + Left, чтобы вернуться к вызову. Нажмите сочетание клавиш Alt + Left и Alt + Right для перемещения вперед и назад по хронологии местоположения курсора.
Также можно щелкнуть правой кнопкой мыши и выбрать 'Переход' > 'Переход к объявлению/определению' или другие вариантам навигации по коду.
Изменение исходного кода главного класса
Чтобы открыть источник класса Main в редакторе, щелкните правой кнопкой мыши узел класса Main.java и выберите 'Открыть'.
Замените строку //TODO code application logic here в методе main следующим кодом:
В поле слева появится индикатор в виде лампочки, сообщающий об ошибке. Щелкните индикатор. Отобразится ярлык для создания метода nativePrint .
Щелкните этот ярлык, после чего будет вставлен следующий код:
Измените метод nativePrint() : вставьте ключевое слово native в подпись метода, чтобы она выглядела следующим образом:
Ключевое слово native означает, что реализация этого метода размещена во внешней библиотеке в машинном коде. Однако при запуске местоположение библиотеки не ясно.
Новый метод main будет выглядеть следующим образом:
Правой кнопкой мыши щелкните имя проекта и выберите пункт "Очистить и собрать". После этого проект должен успешно собраться.
Настройка проекта приложения Java
Для данной программы требуются проект Java и проект C. В этом разделе описаны создание и настройка проекта Java для разрабатываемого приложения JNI. Для этого потребуется создать проект приложения Java, инициализировать его главный класс и добавить метод в машинном коде к этому классу.
Выберите команду "Файл" > "Новый проект". Выберите категорию "Java" и тип проекта "Приложение Java". Нажмите 'Далее'.
В поле "Имя проекта" введите JNIDemoJava .
В качестве местоположения проекта можно указать любой каталог на компьютере. В этом примере используется папка по умолчанию "NetBeansProjects" в каталоге пользователя.
Не снимая флажок 'Создать основной класс', измените имя основного класса на jnidemojava.Main .
В среде IDE будет создана папка проекта NetBeansProjects/JNIDemoJava .
Настройка помощника при работе с кодом в случаях, когда не удается создать проект
Использование мастера настройки помощника при работе с кодом наиболее эффективно при сборке кода с использованием данных отладки (рекомендуемые параметры: -g3 -gdwarf-2 для компиляторов GNU и просто -g для компиляторов Oracle Solaris Studio.
Но если сборка проекта не выполнена или не содержит данных отладки, мастер настройки помощника при работе с кодом поддерживает специальный режим 'Поиск в файловых системах файлов заголовков C/C++'. В этом режиме IDE NetBeans попытки разрешения конфликтов включали директивы путем поиска файловых систем для заголовков. Мастер попросит ввести путь для поиска заголовков. По умолчанию путем поиска является корень исходного проекта.
Решение
Вы, вероятно, должны пройти -static к параметрам компоновщика, чтобы предотвратить связывание динамической версии этой библиотеки или когда «Я позаботился о том, чтобы вручную добавить каждую из библиотек по отдельности в разделе« Библиотеки »раздела« Линкер » Вы также случайно добавили динамическую версию библиотеки вместо того, чтобы добавлять только статическую версию.
Поиск всех определений пространства имен
Пространство имен может быть определено в различных файлах проекта. Для перехода между различными определениями пространства имен используется окно классов (CTRL+9) Щелкните правой кнопкой мыши интересующее вас пространство имен, затем выберите "Все объявления". Отобразится список всех определений, отсортированных по именами файлов.
РЕДАКТИРОВАТЬ 2
Я удалил или изменил некоторые из несуществующих путей к файлам / папкам на вкладке помощи с кодом на вкладке C / C ++ под опциями, это, похоже, привело к исчезновению некоторых ошибок в редакторе, но я все еще не могу собрать проект (и ошибки не исчезли в этом конкретном проекте), и проекты, которые я создал в прошлом и которые раньше работали просто отлично, строятся, но я все еще получаю «RUN FAILED exit value 127».
Настройка встроенного анализатора для помощи при работе с кодом
Предположим, что исходный код приложения управляется системой контроля версий (VCS), такой как Mercurial, и вы создаете проект IDE на основе исходного кода. Если открыть IDE проект в IDE и вызвать изменения из VCS, необходимо создать проект IDE таким образом, чтобы он был обновлен с этими модификациями.
После сборки проекта в IDE проект автоматически обновляется в IDE следующими способами.
К проекту IDE добавляются новые блоки компиляции.
Существующие блоки компиляции изменяются с учетом новых или измененных определенных пользователем добавлений и макросов.
Модули компиляции, которые исключены из сборки, не исключаются из функции помощи при работе с кодом.
IDE использует анализатор сборок для сбора информации о сборке, используя промежуточные техники для получения вызова EXEC системной библиотеки на платформах Oracle Solaris и Linux. По умолчанию средство анализа сборки используется при создании проекта с существующим исходным кодом и запуске функции помощи при работе с кодом вручную. Если анализатор сборки не используется, журнал результатов сборки используется для сбора информации.
Если не нужно, чтобы IDE выполняла обновления проекта, можно отключить анализатор сборки следующим образом.
Щелкните правой кнопкой мыши узел проекта в окне 'Проекты' и выберите 'Свойства'.
В диалоговом окне "Свойства проекта" выберите категорию "Помощь при работе с кодом".
Снимите флажок 'Использовать анализатор сборки'.
Для проектов, созданных на основе исходного кода, для которых создана своя собственная среда во время сборки, анализатор сборки иногда может работать с ошибками. В случае ошибки сборки, если установлен флажок 'Использовать анализатор сборки' следует проверить сценарий сборки, чтобы убедиться, что отменена переменная среды LD_LIBRARY_PATH . Если переменная LD_LIBRARY_PATH отменена, также следует отменить LD_PRELOAD . Если эти две переменные отменены, анализатор сборки автоматически отключается. Если не удается изменить сценарий сборки, можно отключить анализатор сборки, как описано выше, и IDE может использовать журнал выходных данных для информации о сборке.
Настройка среды для учебного курса
Для этого учебного курса потребуются модули Java и C/C. Если комплект C/C IDE NetBeans уже загружен, пользователи могут загрузить дополнительные модули Java по отдельности.
Чтобы определить наличие модулей Java и C/C, выберите пункт меню "Файл > Новый проект". В категории проектов должны входить Java и C/C.
Чтобы загрузить отсутствующие модули Java и C/C++, выполните следующие действия.
В IDE NetBeans выберите 'Сервис' > 'Подключаемые модули'.
Во вкладке "Доступные подключаемые модули" установите флажок для Java или C/C++ в зависимости от того, какой модуль отсутствует в среде IDE. Если оба модуля уже установлены, они отобразятся во вкладке "Установлено".
Щелкните 'Далее' в диалоговом окне установщика IDE NetBeans, установите флажок принятия условий лицензии установщика и щелкните 'Установить'.
По завершении установки нажмите кнопку "Готово".
Требования
Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.
Комплект для разработчика на языке Java (JDK)
Компиляторы C и C++, make , gdb
Дополнительные сведения о загрузке и установки необходимого программного обеспечения см. в разделах Инструкции по установки IDE NetBeans 8.0 и + Настройка IDE NetBeans дляC/C+/Fortran.
Другие решения
После многих часов и еще большего количества непристойностей я смог успешно запустить простую программу SFML и отобразить окно основного теста.
Я знаю, что мне еще предстоит многому научиться, но исправлением моего решения стало расположение моих общих библиотек (файлов .dll).
Я предполагал, что ссылки на них в конфигурации компоновщика сделали бы эту работу, но кажется, что библиотеки .a искали их в локальном каталоге скомпилированной программы. На данный момент я все еще не знаю, как это изменить.
Таким образом, решением было вручную переместить файлы .dll в файловой системе в каталог скомпилированной программы, в моем случае:
C: \ Users \ Drayux \ Documents \ Coding \ NetBeans \ SFML Test \ dist \ Debug \ MinGW-Windows
В этой учебной программе рассматривается создание простого приложения, использующего код Java TM Native Interface (JNI), написанный на языке программирования C.
Этот учебный курс создан для Linux.
Настройка свойств проекта
Правой кнопкой мыши щелкните узел проекта "JNIDemoCdl" и выберите "Свойства".
В диалоговом окне свойств выберите узел "Компилятор C" в свойствах "Сборка" узла.
Перейдите к каталогу JDK и выберите подкаталог include .
Выберите параметр 'Сохранить путь как абсолютный', затем нажмите кнопку 'Выбрать', чтобы добавить этот каталог во включенные каталоги проекта.
Аналогичным образом добавьте каталог JDK include/linux , затем нажмите кнопку "ОК".
Эти параметры требуются для включения ссылок на библиотеку Java jni.h из кода C.
Найдите область 'Строка компиляции' в параметрах компилятора C. Щелкните текстовое поле в свойстве 'Дополнительные параметры' и введите -shared -m32 .
Параметр -shared указывает создание динамической библиотеки. Параметр -m32 указывает создание двоичного файла для 32-разрядных платформ. По умолчанию в 64-разрядных системах компилируются двоичные файлы для 64-разрядных платформ, что приводит к возникновению множества проблем в 32-разрядных JDK.
Другие решения
Мне интересно, должен ли я сделать один проект NetBeans для приложения? (Сначала я попробовал это сделать, но, поскольку все приложения находятся в одном и том же git-репозитории, он создавал много шума, поэтому я предположил, что это был неправильный путь.)
Да, у вас должны быть разные проекты NetBeans, если ваши приложения разделены, и, поскольку они находятся в разных доменах, кажется, что они довольно разные.
Один из способов снизить уровень шума в этом подходе — щелкнуть правой кнопкой мыши другие каталоги приложений и найти опцию Mark directory as > excluded и он должен исчезнуть (и файлы не будут проиндексированы для автозаполнения / поиска / и т. д.).
У меня нет проблем с таким сценарием, если я только выбираю имя файла. Затем NetBeans ищет файл с таким именем во всем каталоге проекта.
Если я выберу имя файла и путь, он не будет работать. Может в этом твоя проблема?
Я ничего не изменил, и это работает как шарм.
есть альтернативный способ установить путь, то есть через php.ini
добавьте следующую строку в php.ini set path of
Я знаю, что подобные вопросы существуют, я их видел, и мне не повезло с ними в мои часы поиска и устранения неисправностей, прежде чем я решил, что должен спросить.
Я новичок в C ++, изучая его через класс. Мое назначение требует от меня использования сторонней библиотеки: SFML . Моя текущая настройка кодирования использует Netbeans с плагином C ++, Windows 10. Ранее я использовал компилятор Cygwin. SFML утверждает, что требует, чтобы он использовался с точной версией одного из компиляторов, с которыми он был скомпилирован, поэтому я выбрал MinGW 7.3.0, который я с тех пор установил, и продолжил свои попытки.
В «Project» -> Properties -> Build -> C ++ Compiler я добавил каталог включений SFML:
«C: / Пользователи / Drayux / Документы / Кодирование / NetBeans / Сторонние библиотеки / SFML-2.5.1 / include»
Здесь, в -> Определения препроцессора я также добавил:
Как предложено в учебнике Вот .
В «Project» -> Properties -> Build -> Linker я добавил каталоги lib и bin SFML:
«C: / Пользователи / Drayux / Документы / Кодирование / NetBeans / Сторонние библиотеки / SFML-2.5.1 / bin»
«C: / Пользователи / Drayux / Документы / Кодирование / NetBeans / Сторонние библиотеки / SFML-2.5.1 / lib»
Наконец, я позаботился о том, чтобы вручную добавить каждую из библиотек по отдельности в разделе «Библиотеки» раздела «Линкер». Также как предложено выше учебником.
После всего этого я могу написать стандартную программу, которая компилируется и запускается. Однако, как только я начинаю включать заголовки библиотеки SFML, иногда код строится, но не запускается, в других случаях он просто не собирает все вместе.
Возьмите этот пример кода:
Когда я пытаюсь собрать его в конфигурации, описанной выше, сборка проходит успешно, но запуск не выполняется. Вот обе приставки.
Я попробовал решение, добавив LD_LIBRARY_PATH в раздел среды в разделе Выполнить в свойствах проекта, но безуспешно.
Не видя других решений, касающихся моей ситуации, я чувствую себя застрявшим. Любая помощь с благодарностью.
Настройка помощника при работе с кодом для проектов на базе нескольких платформ
При разработке проекта на базе нескольких платформ с помощью существующего кода можно использовать один и тот же проект IDE для нескольких платформ. Создание конфигурации для платформы и изменение набора компиляторов, параметров компиляторов и других свойств проекта надлежащим образом.
Мастер настройки помощника при работе с кодом также можно использовать для каждой конфигурации отдельно: он изменяет только ту конфигурацию, которая активна в настоящий момент. Таким образом, вы можете запустить его отдельно для каждой конфигурации и получить разные параметры помощника при работе с кодом для каждой платформы.
Решение
У меня был такой же опыт с Netbeans (8.0.2), когда я не смог найти включения («Не удается найти файл включения») в Linux.
Я должен был сделать следующее:
- На вкладке «Инструменты сборки» в настройках «C / C ++» нажмите «Восстановить настройки по умолчанию», чтобы разрешить повторное сканирование инструментов, после чего он выбрал пути ко всем исполняемым файлам. Выберите вновь настроенный набор инструментов по умолчанию и / или удалите старый, чтобы избежать путаницы.
- Под «Помощником по коду» убедитесь, что выбран правильный набор инструментов, затем нажмите «Сбросить настройки» и «Применить». Это заселило все необходимые пути.
- В настройках моего проекта убедился, что я использую правильную (недавно обнаруженную) коллекцию инструментов.
После этого все включения были правильно подобраны, а ошибки исчезли из проверки источника.
Что делать, если проект помечен вопросительным знаком в окне проектов
Вот несколько возможных причин (от наиболее до наименее вероятных).
Неверные или недостаточные пути к пользовательским include, указанные в проекте, логической папке или свойствах файла.
Неверные или недостаточные пользовательские макросы, указанные в проекте, логической папке или свойствах файла.
Исходный файл по ошибке включен в проект
Файл заголовка не включен ни в один исходный файл и поэтому по ошибке включен в проект
Попробуйте запустить мастер настройки помощника при работе с кодом, щелкнув правой кнопкой мыши проект и выбрав 'Помощник при работе с кодом' > 'Настроить помощника при работе с кодом' для устранения проблемы. Если вы знаете местоположение файлов, которые соответствуют ошибке директивы include, можно настроить проект, логическую папку и свойства файлов вручную.
Другие решения
У меня также была эта проблема (не удается найти включаемый файл iostream) в среде IDE NetBeans 8.1. Я решил следующим образом:
Свойства проекта -> Build -> C ++ Compiler -> Basic Options -> C ++ Standard -> C ++ 98 или C ++ 11 или C ++ 14
Я только что импортировал крупный php-проект в NetBeans. В верхнем каталоге у меня есть «app1», «app2», «app3» и т. Д. (Каждый из которых сопоставлен с именем домена), а затем «общий» каталог для (как вы уже догадались) файлов, используемых всеми приложениями. ,
В app1 / route / Search.inc есть:
Но Ctrl-B на этой строке ничего не делает. Имеет смысл, с точки зрения NetBeans, это как одно большое приложение, оно должно быть «../../shared/lib/search.inc». Но для способа настройки приложений вышеприведенное верно, а NetBeans — нет.
Как мне сказать NetBeans, что ему нужно перейти на один дополнительный каталог вверх?
В разделе «Включить путь» я попытался добавить «/ full / path / to / app1» (чтобы найти «../shared/lib/») (пробовал вкладку «Личная», затем «Общая», с теми же результатами.) Но это отвергает это, говоря, что каталог app1 уже является частью приложения. Нет «Делай, что я говорю, и не думай об этом, шлепай!» кнопка.
Добавление символических ссылок в файловую систему, только для NetBeans, кажется немного уродливым.
Мне интересно, должен ли я сделать один проект NetBeans для приложения? (Сначала я попробовал это сделать, но, поскольку все приложения находятся в одном и том же git-репозитории, он создавал много шума, поэтому я предположил, что это был неправильный путь.)
ДОПОЛНИТЕЛЬНО: Меня больше всего интересует ответ на мой последний вопрос — является ли стандартной практикой хранение каждого приложения в качестве отдельного проекта NetBeans, даже если все они находятся в одном репозитории git?
Читайте также: