Eclipse插件运行时创建问题 - java.lang.NoClassDefFoundError

时间:2016-11-20 10:56:29

标签: java eclipse eclipse-plugin knime jongo

我正在获取Eclipse插件:org / jongo / ResultHandler的java.lang.NoClassDefFoundError

我的源代码在添加必要的jar文件后成功编译。我在Eclipse中使用项目>构建路径作为参考库添加了这些jar。

现在问题是这些外部jar文件在运行时期间无效。

我的 MANIFEST.MF 文件只有一个jar,而不是外部jar。不知道如何在这里添加外部罐子。

Bundle-ClassPath: Test.jar

Build.properties

source.Test.jar = src/
bin.includes = plugin.xml,\
               META-INF/,\
               Test.jar

请建议如何在运行时运行我的应用程序,这将看起来是外部罐子。

1 个答案:

答案 0 :(得分:2)

创建插件时,切勿将jar直接添加到构建路径。

您必须在插件中包含所有广告(或其他插件)并设置Bundle-Classpath并将广告加入build.properties。如果您正在引用其他插件,只需添加插件的依赖项。

您可以使用MANIFEST.MF / plugin.xml / build.properties编辑器将它们添加到MANIFEST.MF。

在编辑器'Runtime'选项卡上将jar添加到'Classpath'条目(对于你的主插件代码,也应该有'。'条目。)

在编辑器的“构建”选项卡上,检查要包含在插件中的所有jar。您应该将jar放在插件中的某个位置(例如'lib'目录)。

例如,在此build.properties中:

source.. = src/
output.. = bin/
bin.includes = META-INF/,\
               .,\
               plugin.properties,\
               plugin.xml,\
               lib/jogg-0.0.7.jar,\
               lib/jorbis-0.0.15.jar,\
               lib/vorbisspi1.0.2.jar,\
               icons/

我在'lib'目录中有三个罐子。

MANIFEST.MF的内容如下:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: greg.music.ogg;singleton:=true
Bundle-Version: 2.0.0.qualifier
Bundle-Vendor: %plugin.provider
Bundle-Localization: plugin
Require-Bundle: greg.music.core;bundle-version="1.0.0",
 greg.music.resources;bundle-version="1.0.0",
 org.eclipse.core.runtime,
 javazoom.jlgui.basicplayer,
 org.eclipse.e4.core.services;bundle-version="2.0.100"
Bundle-ClassPath: .,
 lib/jogg-0.0.7.jar,
 lib/jorbis-0.0.15.jar,
 lib/vorbisspi1.0.2.jar
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: javax.annotation;version="1.0.0",
 javax.inject;version="1.0.0",
 org.eclipse.e4.core.di.annotations
编辑器中的

运行时选项卡: enter image description here

构建标签: enter image description here