1

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

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

现在的问题是这些外部 jar 文件在运行时不起作用。

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

Bundle-ClassPath: Test.jar

构建.properties

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

请建议如何在运行时运行我的应用程序,它将看起来像外部 jars。

4

1 回答 1

3

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

您必须在您的插件(或作为其他插件)中包含所有 jar,Bundle-Classpath并在build.properties. 如果您正在引用其他插件,只需将它们添加到您的插件的依赖项中。

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

在编辑器的“运行时”选项卡上,将 jars 添加到“类路径”条目中(还应该有一个“。”主插件代码的条目)。

在编辑器的“构建”选项卡上,检查要包含在插件中的所有 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

编辑器中的运行时选项卡: 在此处输入图像描述

构建选项卡: 在此处输入图像描述

于 2016-11-20T11:04:56.553 回答