代码之家  ›  专栏  ›  技术社区  ›  Martin Lazar

Eclipse插件-运行时使用了错误的jar

  •  0
  • Martin Lazar  · 技术社区  · 15 年前

    我的Eclipse插件有一个严重的问题。。

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

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

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

    当我在NetBeans上开发插件时,解决方案很简单——将jar包装在一个单独的模块中,设置要导出的包并声明对这个新模块的依赖性。。

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

    2 回复  |  直到 15 年前
        1
  •  3
  •   Peter Å tibraný    15 年前

    确保您的依赖项是正确的。如果您的代码依赖于库的新版本,那么您需要在MANIFEST.MF中指出这一点。例如,如果您需要bundle 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还没有转换成plugin,您需要手动完成:您只需在Eclipse中使用现有的jar创建新的插件项目)

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

    Bundle-ClassPath: .,MyRhino.jar
    
        2
  •  1
  •   Martin Lazar    15 年前

    我终于解决了。。

    在eclipse中,通过新建项目向导从现有jar中创建包装器插件非常简单。。但问题是向导没有在包类路径中包含jar(正如我所期望的那样)。很困惑(至少对我来说),向导只为您完成了一半的工作:/

    在将jar插入包装器插件包类路径之后,一切都可以正常工作。

    谢谢彼得,你的回答:)