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

时间:2013-06-30 05:59:13

标签: java eclipse-plugin classloader classcastexception

我正在编辑一个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

2 个答案:

答案 0 :(得分:3)

你需要在下面为Eclipse插件添加一个类路径的correspoinding jar:

  1. 打开plugin.xml
  2. 转到运行时标签
  3. 在classpath部分下,单击“添加”,然后选择已放置在项目下的文件夹中的jar文件(例如,在lib下)。
  4. 现在清理并构建项目
  5. 当你这样做时,它会将相应的条目添加到MANIFEST.MF,如下所示:

    Bundle-ClassPath: lib/foobar.jar,
    .
    

    在eclipse插件中将jar添加到classpath的方式与普通的java项目不同,因为它基于OSGi。

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

答案 1 :(得分:0)

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

Accessing the Java Build Path

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