【问题标题】:Eclipse plugin: java.lang.NoClassDefFoundErrorEclipse 插件:java.lang.NoClassDefFoundError
【发布时间】:2021-06-24 15:17:49
【问题描述】:

如你所见:

我将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 项目中运行相同的代码是可行的。

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

【问题讨论】:

  • 我认为其中一个 jar 在系统类路径中,eclipse 看不到。如果可能,将该 jar 也移动到项目类路径中。
  • 如果这是一个 Web 应用程序,请将 jar 放到 WEB-INF/lib 文件夹中。否则,我建议在您的项目中创建一个文件夹(我倾向于将其称为 lib)并将 jar 放在那里,然后引用该文件夹和那里的所有 jar 作为构建路径的一部分。
  • 见鬼,你是对的。我没想到!也许你也可以告诉这个:我有一个 .dll 文件,调试的 Eclipse-Application 需要它。有没有办法告诉 eclipse 插件导出我已经复制到项目中的 .dll 文件?

标签: java eclipse exception eclipse-plugin


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-11-21
          • 1970-01-01
          • 1970-01-01
          • 2013-08-13
          • 2014-01-18
          • 1970-01-01
          • 2019-05-14
          • 1970-01-01
          相关资源
          最近更新 更多