如何解决我没有解决的Eclipse插件中的依赖关系';你不会写吗?

如何解决我没有解决的Eclipse插件中的依赖关系';你不会写吗?,eclipse,plugins,eclipse-plugin,Eclipse,Plugins,Eclipse Plugin,我正在尝试使用一个相对较新的Eclipse插件()。它没有更新站点,所以我无法通过Eclipse中的UI来安装它,后者通常会解析依赖关系。所有可供下载的都是一个.jar,网站上的说明说只需将其放入eclipse/plugins中即可。当我这样做的时候,它似乎工作了,从某种意义上说,我在Window->Show View中获得了插件应该添加的新选项。但是,当我尝试使用这两个视图中的任何一个时,会出现以下错误: org.eclipse.core.runtime.internal.adaptor.Ec

我正在尝试使用一个相对较新的Eclipse插件()。它没有更新站点,所以我无法通过Eclipse中的UI来安装它,后者通常会解析依赖关系。所有可供下载的都是一个.jar,网站上的说明说只需将其放入eclipse/plugins中即可。当我这样做的时候,它似乎工作了,从某种意义上说,我在Window->Show View中获得了插件应该添加的新选项。但是,当我尝试使用这两个视图中的任何一个时,会出现以下错误:

org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter$TerminatingClassNotFoundException: An error occurred while automatically activating bundle org.uqbar.eclipse.tomcat.xt (304).
    at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:125)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:211)
...snip...
Caused by: org.osgi.framework.BundleException: The activator org.uqbar.eclipse.tomcat.xt.UqbarSydeoXtActivator for bundle org.uqbar.eclipse.tomcat.xt is invalid
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:157)
...snip...
Caused by: java.lang.Error: Unresolved compilation problems: 
    The import com.thoughtworks cannot be resolved
    XStream cannot be resolved to a type
    XStream cannot be resolved to a type
    XStream cannot be resolved to a type
上面站点的dependencies页面列出了几个依赖项,包括XStream。我尝试分别下载这些.jar,并将它们放到eclipse/plugins目录中,但这并没有解决错误。当我查看罐子中的清单时,我看到:

Bundle-ClassPath: .,commons-logging-1.0.4.jar,xpp3_min-1.1.4c.jar,xstr
 eam-1.3.jar,xstream-benchmark-1.3.jar
但是很明显,xstream JAR在类路径上不可用(在哪里?)。我不确定可以将它们放在哪里,以便插件能够识别它们

我试着联系开发人员,但没有得到任何回应,所以我转向so。我能做些什么吗?或者插件的包装是否不正确


更新:显然错误在激活器中,而不是插件本身。我尝试将插件作为源项目导入,但src/目录为空。当我尝试导出该插件时,它不会出现在可用的可部署插件列表中。所以这仍然没有解决。

您可以定义一个Eclipse片段,该片段的类路径上缺少依赖项(通常在片段的lib目录中,并在清单中的类路径上指定)

片段是附加到目标插件的一种特殊类型的插件。该片段在运行时与目标插件合并,因此插件中的类可以访问jar


请参阅,以获取有关创建片段的一些提示。

Rich Seller的修复将起作用,但真正的问题是一个蹩脚的插件,它在
捆绑类路径上指定了一组第三方库,但实际上并没有包含它们!
Bundle类路径
是Bundle内部的类路径,因此任何引用的库都应该位于Bundle内部


由于包含了源代码,您可以重新构建缺少依赖项的插件(许可证允许),虽然我认为所有这些第三方依赖项都应该是外部的,但关于如何编写OSGi捆绑包/Eclipse插件,这是一个完全不同的讨论。

从Eclipse 3.4开始手动添加插件的推荐方法是将其放入Eclipse中的dropins目录中。您可能会发现将插件添加到eclipse/plugins中没有任何效果(这是因为p2负责eclipse/plugins目录)。实际上,将其放在dropins目录中不起作用,因为它是我已经安装(通过eclipseui)的插件的扩展,该插件位于plugins目录中。但对于大多数其他情况,是的,辍学是一条路要走。我已经在别的事情上偏离了方向(事情是这样的),所以我还没有尝试过Rich的解决方案,但当我尝试的时候,我会报告的!不幸的是,没有包括源代码。他们发布的只是一个.jar.Hm,我尝试了这个,但仍然得到相同的错误。这似乎是一个编译时问题,而且由于片段在运行时逻辑上被合并,所以它并没有解决这个问题。我需要获取插件源代码并重新编译自己吗?在源代码不可用的情况下,我能做些什么来修复这个问题吗?仍在等待开发人员的消息。