将类路径容器添加到 Eclipse 插件的运行时
Add Classpath Container to Eclipse Plugin’s Runtime
我们使用类路径容器(由 Buildship 提供)来管理 Eclipse 插件项目中的非插件依赖项:
效果很好,项目按预期编译。
但是,如果我们使用“Eclipse 应用程序”运行 配置启动我们的项目,我们会收到类似
的错误
java.lang.NoClassDefFoundError: org/apache/commons/collections4/multiset/HashMultiSet
一旦我们的插件被激活。很明显,Eclipse 使用类路径容器编译 项目,但不会在运行时间.[=14= 添加它]
我在互联网上搜索了很长时间以找到解决方案,但我没有:
如何告诉 Eclipse 将类路径容器添加到项目的 运行time 类路径中?
我没有找到执行此操作的任何选项。
我知道我可以将依赖项的 jar 添加到 MANIFEST.MF
中的类路径,但我不愿意这样做。这完全 与类路径容器的想法相矛盾。相反,我希望 Eclipse 自动将类路径容器中的所有 jar 添加到 运行time 类路径。
你不能这样做,插件所依赖的一切都必须在'Require-Bundle'或'Import-Package'或'Bundle-Classpath'中的MANIFEST.MF中列出。
导出插件时,没有关于插件中包含的项目类路径的信息。
我找到了适合我们的解决方案:
发展
在开发过程中,我们通过将它们添加到 bootclasspath 来加载依赖 jar。对于“Eclipse 应用程序”运行 配置,我们可以将以下内容添加到配置的 JVM 参数中:
-Xbootclasspath/a:"${project_classpath:Project1}:${project_classpath:Project2}"
这很方便,因为它会将所有类路径容器添加到 运行时间。所以我们可以通过 gradle 和类路径容器进行真正的依赖管理。
生产
对于生产,我们会将我们的依赖项打包为 Osgi 包并自动将它们添加到 MANIFEST.MF
。我们正在使用 gradle 来构建我们的项目,所以这应该不是问题。
我们使用类路径容器(由 Buildship 提供)来管理 Eclipse 插件项目中的非插件依赖项:
效果很好,项目按预期编译。
但是,如果我们使用“Eclipse 应用程序”运行 配置启动我们的项目,我们会收到类似
的错误java.lang.NoClassDefFoundError: org/apache/commons/collections4/multiset/HashMultiSet
一旦我们的插件被激活。很明显,Eclipse 使用类路径容器编译 项目,但不会在运行时间.[=14= 添加它]
我在互联网上搜索了很长时间以找到解决方案,但我没有:
如何告诉 Eclipse 将类路径容器添加到项目的 运行time 类路径中?
我没有找到执行此操作的任何选项。
我知道我可以将依赖项的 jar 添加到 MANIFEST.MF
中的类路径,但我不愿意这样做。这完全 与类路径容器的想法相矛盾。相反,我希望 Eclipse 自动将类路径容器中的所有 jar 添加到 运行time 类路径。
你不能这样做,插件所依赖的一切都必须在'Require-Bundle'或'Import-Package'或'Bundle-Classpath'中的MANIFEST.MF中列出。
导出插件时,没有关于插件中包含的项目类路径的信息。
我找到了适合我们的解决方案:
发展
在开发过程中,我们通过将它们添加到 bootclasspath 来加载依赖 jar。对于“Eclipse 应用程序”运行 配置,我们可以将以下内容添加到配置的 JVM 参数中:
-Xbootclasspath/a:"${project_classpath:Project1}:${project_classpath:Project2}"
这很方便,因为它会将所有类路径容器添加到 运行时间。所以我们可以通过 gradle 和类路径容器进行真正的依赖管理。
生产
对于生产,我们会将我们的依赖项打包为 Osgi 包并自动将它们添加到 MANIFEST.MF
。我们正在使用 gradle 来构建我们的项目,所以这应该不是问题。