Я постараюсь дать как можно больше подробностей здесь, простите меня, если кто-то не имеет значения. У меня есть два проекта в затмении. Проект 1: com.myworkplace.parent, с кодом в одноименном пакете. Проект 2: com.myworkplace.child, с кодом в одноименном пакете (я переместил свой код в этот пакет из пакета по умолчанию, если это имеет значение). Насколько я могу судить, они расположены в моей папке рабочего пространства и структурированы так, как вы ожидали.Eclipse classpath и NoClassDefFoundError
Я добавил ребенка к пути построения родительского элемента в eclipse с помощью Java Build Path -> Projects -> Add. Файл .classpath Родителя содержит запись:
<classpathentry combineaccessrules="false" kind="src" path="/com.myworkplace.child"/>
Я добавить ссылку на класс com.myworkplace.child.Child в родителю, импортировать его, скомпилировать его без ошибок, запустить и получить:
java.lang.NoClassDefFoundError: com/myworkplace/child/Child
Что дает?
Редактировать: Родительское приложение представляет собой приложение RCP, возможно, OSGI (я действительно мало знаю о RCP и связанных с ним вещах.) Некоторые поисковые запросы заставляют меня думать, что это может иметь какое-то отношение к этому.
Это правильно. Если после этого это не сработает, щелкните правой кнопкой мыши на проекте в навигаторе и выберите параметр «Обновить класс». –
Правильно, родительский плагин RCP.Ребенок не имеет и не имеет ничего общего с RCP. Поэтому я не могу добавить его через необходимые плагины. Загадочно, он также отсутствует в списке пакетов, которые можно импортировать. Мне удалось запустить приложение без ошибок одним методом: экспортировать дочерний элемент в виде баннера и добавить его во вкладку времени выполнения свойств плагина. Некрасиво. Во всяком случае, это достаточно хороший ответ для принятия. – jsn
@jsn Просто дружеская рекомендация рассмотреть что-то, не зная специфики вашей ситуации: вам следует рассмотреть возможность преобразования дочернего проекта в плагин. Единственное различие заключается в добавлении файла META-INF/manifest.mf (или добавление нескольких особых записей OSGi в этот файл, если у вас их уже есть). Детский проект по-прежнему будет полностью использоваться в качестве отдельного (не OSGi) jar-файла для других целей, и он сделает более элегантную интеграцию с родительским RCP-приложением. – ChrisH