0

我的 Eclipse 插件存在严重问题。

我的插件依赖于另外两个插件。所有这些插件(包括我的插件)都使用 Mozilla Rhino 引擎 - 其中两个使用js.jar(1.4 版)。但是我的插件使用了新版本,还没有发布,并且打包在MyRhino.jar中。

在开发过程中,一切都很顺利——代码完成为我提供了我特殊版本的 rhino 中的类和方法,没有错误等。

但是当我运行我的插件时,使用了不同版本的 Rhino,我得到了运行时异常,比如 ClassNotFoundException 等等。

我应该如何告诉 eclipse 在运行时使用与开发时相同的 jar?

当我在 NetBeans 上开发插件时,解决方案很简单 - 将 jar 包装在一个单独的模块中,设置要导出的包并声明对这个新模块的依赖。我在 Eclipse 中找到了类似的解决方案,但是它对我不起作用 -尽管我声明了对包装器插件的依赖,但即使在开发时,包和类也不可用。

我已经花了几个小时来解决这个问题并没有解决它,因此感谢您的帮助。谢谢大家。

4

2 回答 2

3

确保您的依赖项是正确的。如果您的代码依赖于新版本的库,那么您需要在 MANIFEST.MF 中指出这一点。例如,如果您需要捆绑 org.mozilla.rhino,请指定您需要的最低版本:

Require-Bundle: org.mozilla.rhino;bundle-version="1.5.0"

您的 MyRhino.jar 需要指定正确的版本(例如 1.5.0),即使它尚未发布:

Bundle-Version: 1.5.0.qualifier

(如果 MyRhino.jar 尚未转换为插件,您需要手动进行:您可以使用 Eclipse 中的现有 JAR 简单地创建新的插件项目)

或者,您可以将 MyRhino.jar 包装到您的插件中,并删除对其他插件的依赖。为此,请使用 Bundle-ClassPath(有关详细信息,请参阅http://www.aqute.biz/Blog/2007-02-19)。如果您将 MyRhino.jar 直接放入您的插件中,那么 Bundle-ClassPath 应该是:

Bundle-ClassPath: .,MyRhino.jar
于 2009-06-26T11:42:35.770 回答
1

终于我解决了。。

通过 Eclipse 中的新项目向导从现有 jar 中创建包装器插件很简单。但问题是该向导不包括 bundle 类路径中的 jar(如我所料)。很困惑(至少对我来说)向导只为您完成了一半的工作:/

在包装插件捆绑类路径中插入 jar 后,everytning 工作。

无论如何,谢谢彼得的回答:)

于 2009-06-29T09:08:15.990 回答