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