2013-07-29 5 views
1

Я хочу использовать Apache commons.io для плагина Project в Eclipse. Я добавил .jar к buildpath:Библиотеки в плагине Eclipse Project

(properties->java build path->Libraries)

Но когда я пытаюсь проверить мой проект, я получаю эту ошибку:

NoClassDefFoundError for org/apache/commons/io/FileUtils.

Я думаю, что затмение не копирует библиотеку или что я скучаю, чтобы сообщить проекту, чтобы скопировать эту библиотеку.

Как я могу решить эту проблему? Я пытаюсь написать плагин экспорта, где полная папка скопирована в другую папку.

+0

Вам нужно добавить файл в путь к классам, а не по пути построения. Еще лучше использовать Maven для управления зависимостями для вас. –

ответ

6

Первый взгляд, если уже есть плагин eclipse, предоставляющий эту библиотеку. Для apache commons вы найдете его. Используйте редактор плагинов и добавьте опции для нужных библиотек, если они распространены, например, apache commons;)

Другая мудрая add directory называет это «libs» и добавляет туда свои банки. Затем поместите их над редактором плагинов в свой путь к классам. Для этого используйте вкладку «Время выполнения» и используйте кнопку добавления в разделе «путь к классу».

это будет в конечном итоге в build.properties нравится эта

source.. = src/ 
output.. = bin/ 
bin.includes = META-INF/,\ 
       lib/commons-csv.jar,\ 
       lib/commons-lang-2.6.jar,\ 
       lib/commons-io-2.0.1.jar 

библиотек, которые добавляются таким образом, будет экспортироваться в плагине к и они будут оставаться в вашем пути к классам.

Путь к классу вашего проекта будет автоматически обновляться.

Лучшая практика для важных библиотек, таких как DB-Driver, поместить их в дополнительный проект плагина, который не расширяет интерфейс. Плагины, подобные этому, будут иметь только build.properties. Тогда вы можете использовать этот плагин библиотеки как зависимость для других плагинов.

+0

, который сделал трюк. спасибо – Iron

0

Вы правы, Eclipse не копирует ресурсы на пути создания проектов. Вам нужно их на classpath. Для этого:

  • вручную скопировать банки к месту, откуда приложение может последовательно их (brittle setup)

  • доступ или использовать инструмент сборки как ant, maven и т.д. (recommended)

0

Ты слышал о Target Definition?
Это именно то, что вам нужно, и все же вы можете использовать его с Maven (Tycho) ... При разработке плагинов вы всегда должны пытаться управлять папками. через определение цели и никогда не добавляйте банки в свой путь к классам

+0

hm, поэтому с этим определением цели я могу добавить этот Jar-файл, это правильно? Я только хочу что-то просто, что работает, ничего необычного. – Iron

+0

Целевые определения не являются фантазией. они правильные пути. И у вас не может быть файлов jar на цель, вам нужно преобразовать банки в пакеты, используя любой инструмент, такой как bnd, или даже Eclipse itselft –