2010-05-19 5 views
9

У меня есть проект плагина Eclipse, и это зависит от других проектов, которые у меня есть в рабочем пространстве Eclipse. После добавления зависимостей проекта в разделе «Путь сборки Java» -> «Проекты», а также выбрав проект в «Заказ и экспорт», я получаю java.lang.NoClassDefFoundError.Проект плагина Eclipse с другими зависимостями проекта

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

Спасибо, Джеймс

ответ

12

затмение плагин в проекте управляет зависимостями иначе, чем обычный проект Java.

Я предполагаю, что вы добавляете пакеты с .class-файлами.

Определите папку библиотеки в вашем проекте подключаемого модуля Eclipse. Скопируйте любые внешние классы и/или банки в папку библиотеки.

Откройте файл MANIFEST.MF в каталоге META-INF. Вы увидите форматированный редактор с 8 вкладками внизу.

Перейдите на вкладку Runtime. Добавьте внешние классы и/или банки в папку библиотеки в Classpath. Это также добавит эти внешние классы и/или банки в путь сборки Java проекта.

Перейдите на вкладку «Зависимости» и добавьте другие проекты Java в диалоговом окне «Импортированные пакеты». Вы должны установить флажок «Показывать неэкспортированные пакеты». Если ваши другие проекты Java - это плагины Eclipse, добавьте их в разделе «Необходимые подключаемые модули».

+0

Я попытался добавить пакеты в раздел «Импортированные пакеты», но я не могу найти пакеты в другом проекте в диалоговом окне «Выбор пакета». Есть ли что-то, что мне нужно сделать до этого? –

+0

Простите, прошло некоторое время с тех пор, как я создал новый проект Eclipse. Я обновил свой ответ с дополнительными инструкциями. –

+0

Гилберт: Не могли бы вы прояснить свои инструкции? Я добавил двоичные файлы через Project -> Java Build Path -> Libraries -> Add Class, а затем импортировал пакеты на вкладке Dependencies плагина. Теперь я получаю «Нет доступных пакетов пакетов« x »для пакетов, импортированных в файл Manifest.MF. Я что-то пропустил? –

0

Если вы не можете скопировать зависимый проект в проект плагина, и вы уверены в наличии зависимого проекта в целевом затмении, где должен быть установлен плагин, то вы можете использовать Runtime.exec() для запуска класса Java, который вы хотите запустить, или ProcessBuilder класс для запуска класса.

Как это:

// To compile 
Process p = Runtime.getRuntime().exec("javac yourclass.java"); 
// To execute 
Process p2 = Runtime.getRuntime().exec("java yourclass"); 

Это можно рассматривать в самом худшем случае. У меня был такой опыт, и, следовательно, некоторые считают его полезным.

Смежные вопросы