我正在开发基于eclipse插件的RCP应用程序。在我的一个插件项目中,我添加了另一个插件项目作为依赖项。假设项目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;
}
当我尝试创建Mirror类的对象时,从项目A进入内部
Mirror m = new Mirror(connectionString, "EABase_JET4_empty.eap",platformDB.getAbsolutePath());
我收到以下错误
java.lang.NoClassDefFoundError:
com / healthmarketscience / jackcess / ImportFilter
项目B的build.properties(包含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"
有人知道这里出了什么问题吗?
谢谢
最佳答案
您不会在build.properties文件的bin.includes中包含jackcess.jar,因此不会将其包含在RCP构建中。
打开build.properties编辑器,然后在“二进制构建”选择中选择jar。
该jar也必须出现在MANIFEST.MF的Bundle-ClassPath
中。在“运行时”选项卡的清单编辑器中,将jar添加到“类路径”部分(对于正常的插件代码,您还应该输入“。”)。
关于java - Jackcess中的NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29794018/