3

我正在编辑一个 Eclipse 插件代码。只是一个初学者,所以对它没有太多了解。只是试图让它运行atm。

程序运行时抛出ClassNotFoundException。我已将puakma.jar文件包含到项目的构建路径中,并确认该类存在于SOAP包内的 jar 文件中。可能是什么问题?

堆栈跟踪如下:

java.lang.NoClassDefFoundError: puakma/SOAP/SOAPFaultException
    at puakma.coreide.ServerManager.createServerConnection(ServerManager.java:120)
    at puakma.vortex.dialogs.server.AppSelectionDialog.listApplications(AppSelectionDialog.java:284)
    at puakma.vortex.dialogs.server.AppSelectionDialog$6.run(AppSelectionDialog.java:234)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Caused by: java.lang.ClassNotFoundException: puakma.SOAP.SOAPFaultException
    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(ClassLoader.java:247)
    ... 4 more
4

2 回答 2

3

对于 Eclipse 插件,您需要将对应的 jar 添加到 Classpath 中,如下所示:

  1. 打开你的 plugin.xml
  2. 转到运行时选项卡
  3. 在类路径部分单击“添加”并选择您放置在项目下文件夹中的 jar 文件(比如在 lib 下)。
  4. 现在清理并构建项目

当您这样做时,它将向 MANIFEST.MF 添加相应的条目,如下所示:

Bundle-ClassPath: lib/foobar.jar,
.

在 Eclipse 插件中将 jars 添加到类路径的方式与普通的 java 项目不同,因为它是基于 OSGi 的。

您可以从此链接了解有关 Eclipse 插件的类路径的更多信息。希望这可以帮助。

于 2013-06-30T06:51:30.967 回答
0

更一般地说,正如我花了几个小时发现的那样,在 Eclipse 中有构建路径和运行时类路径。前者处理编译您的 java 应用程序,并且可以通过以下方式访问:

访问 Java 构建路径

而后者处理 JRE 能够在运行时定位相关类。要设置它,您必须改为进入运行配置,转到标记为“依赖项”的选项卡并在那里添加您的库。更多信息请搜索“Eclipse运行配置依赖”

于 2019-06-05T06:52:26.820 回答