簡體   English   中英

如何防止classpath上的第三方JAR覆蓋我的類依賴關系?

[英]How to prevent third-party JARs on the classpath from overriding my class dependencies?

我正在用Java編寫應用程序插件,而我的插件依賴於多個第三方JAR。 我將這些依賴項與我的插件捆綁在一起,以便可以僅部署一個JAR文件。

主機應用程序也可能正在運行其他供應商提供的插件。 不幸的是,宿主應用程序將所有插件都放在類路徑上,而我無法更改此行為。 如果另一個供應商的插件在我的插件之前加載並使用了不兼容的依賴項版本,則我的插件可能會崩潰。

我無法提前測試我的插件與其他插件之間的兼容性。 我也不能說插件之間存在不兼容性-如果我的插件崩潰,則對我的公司影響不大。 客戶不在乎為什么我的插件會崩潰,他們將其歸因於我這一端的不良編程。

我正在尋找一種防止其他供應商的插件干擾我自己的插件的方法。 可能嗎?

我聽說過自定義類加載器,但不確定該解決方案是否對我有用。

您可以使用Uberjar 它的作用是將所有jar /類移至custom namespace以使您的所有類都不沖突,因為您的依賴項具有不同的名稱空間。

您可能想看看Maven陰影

您可以嘗試在插件中嵌入OSGi容器 這將使您能夠以OSGi捆綁軟件的形式運行和加載依賴項,而與系統類加載器隔離。

Felix的說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM