6

如你看到的:

在此处输入图像描述

我添加jni4net.j-0.8.6.0.jar到我引用的库中,但我仍然收到java.lang.NoClassDefFoundError异常:

java.lang.NoClassDefFoundError: net/sf/jni4net/Bridge
    at sibeclipseplugin.debug.DebuggerInterface.initialize(DebuggerInterface.java:15)
    at sibeclipseplugin.debug.SibDebugTarget.<init>(SibDebugTarget.java:65)
    at sibeclipseplugin.ui.launch.LaunchConfigurationDelegate.launch(LaunchConfigurationDelegate.java:30)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:858)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:707)
    at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1018)
    at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1222)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Caused by: java.lang.ClassNotFoundException: net.sf.jni4net.Bridge cannot be found by SIBEclipsePlugin_0.0.0.1
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 8 more

我不知道问题是什么。当我将项目作为 Eclipse-Application 启动时,它找不到该类。在普通的 Java 项目中运行相同的代码是可行的。

有人知道如何解决这个问题吗?

4

4 回答 4

7

您需要在 build.properties bin.includes 条目中添加 jar 文件。此外,在您的 MANIFEST.MF 文件中,需要将它们添加到 Runtime->Classpath 列表中(对应于 MANIFEST.MF 中的 Bundle-ClassPath 条目)。

编辑:如果您只是将它们放在引用的库中,OSGi 系统将不会意识到这一事实。

于 2013-08-07T14:06:04.793 回答
6

我在引用的库文件夹中的 .jar 遇到了完全相同的问题(jar 是通过右键单击项目 --> 构建路径 --> 配置构建路径 --> 库 --> 添加外部 Jar 添加的)。

这修复了它:右键单击项目 --> 构建路径 --> 配置构建路径 --> 排序和导出。确保检查您的 .jar 文件。 这会将其添加到构建类路径中。您可能认为通过上述方法首次添加 .jar 后会自动检查这一点,但事实并非如此。

于 2014-07-09T01:53:58.067 回答
3

如果您的 jar 文件依赖于其他一些 jar 文件的工作并且您没有将它们添加到您的项目中,也可能会发生这种情况。

于 2013-08-07T14:13:10.077 回答
2

它没有在项目属性中标记为导出:“项目属性”>“订单和导出”选项卡>确保检查 .jar 文件以进行导出。

于 2016-08-19T23:50:52.560 回答