我正在尝试在我的捆绑包中包含 3rd 方 jar。我正在关注本教程http://www.aqute.biz/Blog/2007-02-19,但是在我的 Activator 中,我在尝试从该外部 jar 中引用一个类时得到 ClasNotFoundException 。
我的 bundle jar 目录结构:
-\MyBundle
-\plugin.xml
-\META-INF
-\MANIFEST.MF
-\org
-\mybundle
-\Activator.class
-\3rdParty.jar
MANIFEST.MF 看起来像这样:
...
Bundle-ClassPath: .,
3rdParty.jar
...
它是 Eclipse 3.5.1 RCP 应用程序的一部分。
错误信息:
java.lang.ClassNotFoundException: 3rd.party.proxy.ConfiguratorProxy
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:494)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at my.program.eclipse.core.ProcessEditorUploaderActivator.start(ProcessEditorUploaderActivator.java:111)
但是当我调用 this.getClass().getResource("/3rdParty.jar") 时,它会起作用。
编辑:问题已解决。我不得不从我的 RCP 应用程序中删除 org.eclipse.core.runtime、org.eclipse.equinox.app 和 org.eclipse.osgi 目录。缓存了有关捆绑包类路径的信息。