【问题标题】:Manipulate the java class path of an Eclipse plugin?操作 Eclipse 插件的 java 类路径?
【发布时间】:2017-11-07 15:18:17
【问题描述】:

我正在开发一个包含 Eclipse 自制视图的插件。 当我运行插件并使用System.getProperty("java.class.path") 显示类路径时 我得到这个作为输出:D:\Programs\eclipse\plugins\org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar

我想添加一些 .jar 文件以使我的视图正常运行,但我不知道如何...我想您可以通过在插件的 MANIFEST.MF 中添加一些规范来做到这一点,但是我不知道该怎么做。 有任何想法吗 ?

【问题讨论】:

    标签: java eclipse plugins


    【解决方案1】:

    我发现的最佳方法是在您的 Eclipse 项目(包含您的视图)中创建一个lib 目录。将您的 .jar 文件放在上述 lib 目录中。

    然后使用 MANIFEST.MF 上的编辑器,将 .jar 文件添加到类路径中。如果您希望导出包,那么您也可以添加到导出的包中。

    根据您的操作,您可能希望/需要更新构建配置。

    如果您检查MANIFEST.MF 文件本身,您将看到Bundle-ClassPath 的条目。它将列出您的条目。这里有标准的“。”对于该项目,我们导出了一个 resources/ 目录和几个 .jar 文件。

    Bundle-ClassPath: .,
    resources/,
    lib/aopalliance-1.0.jar,
    lib/apccore-client-2.11.8.jar,
    lib/cglib-nodep-2.2.2.jar,
    lib/ehcache-2.10.3.jar,
    ...
    

    请注意,根据我们的经验,还需要从项目本身的 Properties 中调整 Java Build Path。一位用户评论说,这一步可能没有必要。由于我们的产品,我们使用的是旧版本的 Eclipse,所以 YMMV,如果需要(通常编译失败是指示符),您需要通过项目上的属性上下文菜单将 .jar 文件添加到“Java构建路径”(您可以对资源目录执行相同操作)。

    这将允许您使用 .jar 文件正确构建。

    【讨论】:

      【解决方案2】:

      每个 Eclipse 插件都有自己的类路径。要在插件中使用其他 jar,您需要将它们包含在插件中。

      将你的 jars 添加到插件目录。通常它们被放在一个“lib”目录中。

      打开插件 MANIFEST.MF 编辑器并在“类路径”部分的“运行时”选项卡上单击“添加...”按钮并将您的 jars 添加到类路径中。

      在编辑器的“构建”选项卡上,确保“lib”文件夹包含在二进制构建部分中。

      您的 MANIFEST.MF 最终应该有一个类似于以下内容的“Bundle-Classpath”条目:

      Bundle-ClassPath: .,
       lib/jogg-0.0.7.jar,
       lib/jorbis-0.0.15.jar,
       lib/vorbisspi1.0.2.jar
      

      (这里我在 lib 文件夹中有 3 个 jar)。

      build.properties 文件应该是这样的:

      bin.includes = META-INF/,\
                     .,\
                     plugin.xml,\
                     lib/,\
                     lib/jogg-0.0.7.jar,\
                     lib/jorbis-0.0.15.jar,\
                     lib/vorbisspi1.0.2.jar
      

      【讨论】:

      • 每个插件都有自己的类路径,这是一个很好的表示法。
      • 明白了,谢谢,这样做之后我的 .jar 文件已经添加好了:Bundle-ClassPath: lib/archi-jar-4.77.100.jar, lib/daogeneration_rev1.jar, src/ 我的 build.properties 也可以,但是当我使用 System.getProperty("java.class.path") 测试它时,我得到了相同的输出和以前一样:D:\Programs\eclipse\plugins\org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar这可能是我测试的问题..我会看看它。
      • System.getProperty("java.class.path") 不适用于 Eclipse 插件。每个插件都有一个由 Eclipse OSGi 代码管理的单独的类路径,并且它不设置该属性。
      • 好的,我明白了,有没有办法以编程方式获取我的插件类路径?
      • 我什么都不知道,插件类路径是一个非常复杂的东西,它不仅仅是一个jar列表。
      【解决方案3】:

      在编译时,我们需要将其添加到项目运行时库中。

      对于运行时,您必须将 jar 打包到您的 EAR/WAR 文件中,或者将其作为应用服务器库加载到应用程序服务器。

      如果您需要更多帮助,请告诉我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多