Почему NetBeans не может найти CopyLib для некоторых моих проектов?
Сегодня утром я столкнулся с неприятным вопросом, который стоил мне несколько часов, пытаясь проследить его. Я унаследовал некоторый код с двумя проектами NetBeans, A
и B
. Они оба строят и работают успешно; нет сложных задач построения Ant; только настройка IDE по умолчанию.
Эти два проекта имеют большой объем кода, поэтому я включил его в новый третий проект Common
. После разрешения ссылок и т.д. NetBeans не сообщает об ошибках. Все кажется прекрасным. Я строил проект Common
без заминок. Тогда все становится странным.
Внезапно, когда я пытаюсь построить проекты A
и B
, они компилируются просто отлично - но в конце сборки каждый из них обрывается с той же ошибкой:
Copying 1 file to C:\Projects\projectName\build
C:\Projects\projectName\nbproject\build-impl.xml:723: The following error occurred while executing this line:
C:\Projects\projectName\nbproject\build-impl.xml:543: taskdef class org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs cannot be found
using the classloader AntClassLoader[]
BUILD FAILED (total time: 3 seconds)
Все .class
файлы отображаются в build/classes
, и все остальное, кажется, прошло гладко, но ничего не делает в папку dist
. Поэтому начинается поиск проблем CopyLibs
.
Люди предложили убедиться, что org-netbeans-modules-java-j2seproject-copylibstask.jar
был правильно указан в файле project.properties
(это было), а также в файле <userhome>/.netbeans/version/build.properties
(это было). Библиотека существует во всех местах, на которые она ссылается; на самом деле, по умолчанию NetBeans помещает копию этой банки в папку ./lib
всех проектов Java. Я пробовал создавать совершенно новые проекты и приводить источники в ручную, безрезультатно. Я был озадачен.
Я размещаю здесь, надеясь, что:
- Возможно, кто-то может дать мне некоторое представление о , как это произошло в первую очередь и как его избежать.
- Возможно, кто-то может сказать мне , почему только некоторые проекты ломаются, даже если все имеют точно такой же файл
project.properties
или являются совершенно новыми.
- Люди с этой проблемой в будущем будут иметь лучшее время.
Ответы
Ответ 1
Ближайшее исправление, которое я могу найти в Интернете, эта ссылка, которая включает только частичное решение. Следуя инструкциям на этом посту, эта проблема не будет устранена, потому что в ней отсутствуют некоторые важные вещи. Здесь решение, которое я в конечном итоге натолкнулся.
В NetBeans, перейдите сюда:
Tools > Options > Miscellaneous > Ant
В нижней части окна есть поле с надписью Properties
. Вставьте следующее:
libs.CopyLibs.classpath=C\:\\Program Files\\NetBeans 7.1\\java\\ant\\extra\\org-netbeans-modules-java-j2seproject-copylibstask.jar
Замените NetBeans 7.1
на ваш фактический путь установки. Это на самом деле все, что есть! Дело в том, что NetBeans, похоже, делает несколько разборок текста в этом поле, когда вы нажимаете OK
. В частности, обрабатывает обратную косую черту как escape-последовательности, а также иногда добавляет обратную косую черту.
Вот почему мне так долго нужно было найти: я пробовал решение по ссылке (например, C:\Program Files\Netbeans
и т.д.), и это не сработало, но позже я вернулся в это окно, чтобы обнаружить это: C\:Program Files
и т.д. "О!" Я подумал: "Я просто набрал это неправильно! Какой я дурак!" Поэтому я "скорректировал" его на C:\
и попробовал еще раз - до сих пор нет успеха. Оказывается, NetBeans добавит обратную косую черту, чтобы сбежать :
, но просто удалит любые другие однократные обратные следы, найденные здесь.
Я до сих пор не знаю, почему это произошло в первую очередь или почему это только влияет на некоторые проекты.
Ответ 2
У меня был NetBeans 7.1.2 на моем Mac, удалил его, а затем установил 7.3.1. У меня такие же ошибки. Вот что мне нужно было сделать, чтобы исправить: перейдите в
Меню NetBeans > Настройки > вкладка Java > Ant subtab > Свойства
Я заметил, что у свойств все еще был старый номер для приложения, поэтому мне пришлось изменить 7.1.2 на 7.3.1, а затем он сработал.
![enter image description here]()
Спасибо, что поставил меня на правильный путь!
Ответ 3
Проблема для моей установки оказалась в проекте, который я включил в качестве библиотеки. У него все еще была папка CopyLibs-2, а не обновленная папка CopyLibs, но у nblibraries.properties был обновленный материал libs.CopyLibs. Я не знаю, как вызвать обновление, поэтому я сделал следующее:
- Deleted lib/CopyLibs-2
- Щелкните правой кнопкой мыши папку "Библиотеки" и выберите "Добавить библиотеку".
- Задача Imported CopyLibs
- Добавлена библиотека задач CopyLibs
Это сделало CopyLibs в моей папке Libraries, которая казалась немного странной, потому что она обычно скрыта, как и jnlp, но она работала без глобального набора libs.CopyLibs.classpath, установленного в Tools > Java > Ant Properties.
Потребовалось несколько попыток правильно очистить материал и добавить его. Иногда он добавляет, но затем показывает проблему, и сообщение с разрешением будет "Библиотека" CopyLibs "имеет отсутствующие элементы" и "Проблема: проект использует библиотеку классов, называемую" CopyLibs ", но элементы классаpath этой библиотеки отсутствуют". Я не понимаю, почему весь процесс настолько суетливый и волшебный.
Я также заметил, что в среде IDE были обновлены мои project.properties, чтобы изменить javac.classpath от ничего до ${libs.CopyLibs.classpath}
Ответ 4
Справочная информация. Свойства Ant хранятся в файле build.properties в каталоге пользователя. Это зависит от платформы, но ее можно найти, просмотрев файл nbproject/private/private.properties. Затем просмотрите путь в файле user.properties.file и посмотрите в указанном файле - вы можете увидеть пути, используемые в сборке Ant, и верны ли они.