NoClassDefFoundError в jackcess

Я работаю над приложением RCP, основанным на плагинах eclipse. В одном из моих проектов плагинов я добавляю другой проект плагина в качестве зависимости. Допустим, проект A имеет проект B как зависимость, определенную в его манифесте. Проект B содержит файл jackcess.jar в качестве ссылочной библиотеки.

В проекте B у меня есть класс Mirror.java

 public Mirror(String source, String template, String target) throws SQLException, IOException {
    this.sourceString=source;
    this.templateFileString=template;
    this.targetFileString=target;
}

внутри из проекта A, когда я пытаюсь создать объект класса Mirror

 Mirror  m = new Mirror(connectionString, "EABase_JET4_empty.eap",platformDB.getAbsolutePath());

Я получаю следующую ошибку

java.lang.NoClassDefFoundError: com/healthmarketscience/jackcess/ImportFilter

build.properties проекта B (содержащий jackcess.jar)

bin.includes = META-INF/,\
           src/main/resources/lib/jackcess-1.2.6.af3.jar

МАНИФЕСТ.МФ

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: MirrorDbToEap
Bundle-SymbolicName: MirrorDbToEap
Bundle-Version: 1.0.0
Export-Package: .,
 com.example.jetdb.mirror
 Require-Bundle: CommonsIo;bundle-version="2.0.0",
 org.apache.commons.lang;bundle-version="2.6.0",
 org.apache.commons.logging;bundle-version="1.0.4"

ImageКто-нибудь знает, что здесь происходит?

Спасибо


person wearybands    schedule 22.04.2015    source источник
comment
Покажите нам файлы build.properties и MANIFEST.MF для проекта, содержащего jackcess.jar.   -  person greg-449    schedule 22.04.2015
comment
@greg-449Проверьте правку   -  person wearybands    schedule 22.04.2015


Ответы (2)


Вы не включаете jackcess.jar в bin.includes в файле build.properties, поэтому он не включается в сборку RCP.

Откройте редактор build.properties и выберите банку в разделе «Двоичная сборка».

Баночка также должна появиться в Bundle-ClassPath файла MANIFEST.MF. В редакторе манифеста на вкладке «Выполнение» добавьте банку в раздел «Путь к классам» (у вас также должен быть «.» для обычного кода плагина).

person greg-449    schedule 22.04.2015
comment
он все еще дает мне ту же ошибку, что и мои build.properties теперь выглядят так bin.includes = META-INF/,\ src/main/resources/lib/jackcess-1.2.6.af3.jar - person wearybands; 22.04.2015
comment
Пожалуйста, отредактируйте вопрос и поместите туда новые build.properties, это невозможно прочитать в комментарии. - person greg-449; 22.04.2015
comment
Я также прикрепил изображение - person wearybands; 22.04.2015
comment
Добавлено требование Bundle-ClassPath - person greg-449; 22.04.2015

Кажется, что класс, доступный во время компиляции, недоступен во время выполнения.

person Super Hornet    schedule 22.04.2015
comment
да, я знаю, но как я могу добавить этот класс во время выполнения, недостаточно ли добавить проект B в качестве зависимости в проект A? - person wearybands; 22.04.2015
comment
я так думаю, этого будет достаточно - person Super Hornet; 22.04.2015