Java ClassNotFoundException,即使该类包含在buildpath中包含的jar文件中

Java ClassNotFoundException,即使该类包含在buildpath中包含的jar文件中,java,eclipse-plugin,classloader,classcastexception,Java,Eclipse Plugin,Classloader,Classcastexception,我正在编辑一个eclipse插件代码。只是一个新手,所以我不太清楚。只是想让它运行自动取款机 运行时程序抛出ClassNotFoundException。我已经将puakma.jar文件包含到项目的构建路径中,并且还确认该类存在于SOAP包中的jar文件中。可能的问题是什么 stacktrace如下所示: java.lang.NoClassDefFoundError: puakma/SOAP/SOAPFaultException at puakma.coreide.ServerManag

我正在编辑一个eclipse插件代码。只是一个新手,所以我不太清楚。只是想让它运行自动取款机

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

stacktrace如下所示:

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

对于Eclipse插件,您需要向类路径添加相应的jar,如下所示:

  • 打开plugin.xml
  • 转到运行时选项卡
  • 在classpath部分下,单击“添加”,并选择您已经放置在项目下的文件夹中的jar文件(比如在lib下)
  • 现在清理并构建项目
  • 当您这样做时,它将向MANIFEST.MF添加相应的条目,如下所示:

    Bundle-ClassPath: lib/foobar.jar,
    .
    
    在eclipse插件中将JAR添加到类路径的方式不同于普通java项目,因为它基于OSGi


    您可以从这里了解更多关于eclipse插件类路径的信息,希望这会有所帮助。

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


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

    clean and build project在runi尝试之前,它不起作用,我想我可以右键单击jar文件并将它们添加到构建路径。看来那不行。我遵循了你的方法,效果很好。Thanx堆。@nick-s您可以,但构建类路径与运行时类路径不同。PDE知道,当您向OSGi类路径(运行时)添加jar时,您也希望它在构建类路径上可用@普拉迪普·辛哈