我正在爲現有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應用程序重新加工到另一個插件平臺是否可行?