我正在为现有的 Java 程序开发一个 Java 插件。现有程序使用特定版本的 eclipse.uml2.*,我的插件也是如此。不幸的是,我的插件需要更新版本。
为了运行插件,我需要将它导出到一个 Jar 文件中(所有的 jars 都打包)。然后程序执行它。但不知何故,新的 eclipse.uml2.* 似乎干扰了程序->它崩溃了。
有没有办法“分离”两个版本的 jar 文件?
我正在为现有的 Java 程序开发一个 Java 插件。现有程序使用特定版本的 eclipse.uml2.*,我的插件也是如此。不幸的是,我的插件需要更新版本。
为了运行插件,我需要将它导出到一个 Jar 文件中(所有的 jars 都打包)。然后程序执行它。但不知何故,新的 eclipse.uml2.* 似乎干扰了程序->它崩溃了。
有没有办法“分离”两个版本的 jar 文件?
一种方法是在您的应用程序中使用自定义类加载器。这很容易引入难以追踪的错误,所以要小心。
这正是 OSGi 试图解决的问题。将 Java 应用程序重新设计到另一个插件平台是否可行?
这将是困难的。您可以想象使用类加载器技巧来允许将两个版本的eclipse.uml.*
类加载到同一个 JVM 中。但就 JVM 而言,它们将是不同的类集,您的插件和基本 java 应用程序将无法交换实例。
重建(并在必要时修改)基础程序或插件可能更简单(并且风险更小......就成功的可能性而言),以便它们都可以使用相同版本的eclipse.uml2.*
类。