我已經做了大量的搜索,並沒有找到這個問題的答案。也許這不能做,但這裏是我需要用於不同類的jar文件的兩個版本
- a.jar文件取決於SomeLibrary-V2.jar
- 的Class1在a.jar文件取決於(間接)上SomeLibrary-V1.jar。
,我想
- a.jar文件從V2
- 1類(和它觸發裝載的類)得到它的類從a.jar文件得到V1類或類有必要的。
我可以寫我自己的child-first classloader在需要時按名稱加載Class1。這個類加載器將首先搜索SomeLibrary-V1.jar(在父類加載器之前)。但是,Class1的類加載器將不會被設置爲我的類加載器,因爲它將推遲到父級。這意味着當Class1試圖加載一個我想從SomeLibrary-V1.jar來的類時,我的子類加載器將不會被使用。
我想我需要我的類加載器設置爲Class1類的類加載器。我已經看過自省將類加載器設置爲我的類加載器實例,但Class對象的類加載器字段未公開。另一種方法可能是從我的類加載器調用definedClass(),但後來我無法真正使用父類。
我見過this但是那裏的答案建議寫一個類加載器,但沒有提供任何細節。我在這裏提供了一些細節,提出瞭解決方案的其他問題/問題(我希望 - 我沒有代表添加註釋)。
我希望我只是在這裏失去了一些東西。謝謝你的幫助。
[Java Classloader可能的重複 - 如何引用不同版本的jar](http://stackoverflow.com/questions/1553567/java-classloader-how-to-reference-different-versions-of-a-罐子) – Ferrybig
只是爲了激發這裏的問題。我正在構建RESTful服務,然後需要使用Spark添加一些功能。 Spark使用Jersey 1.x,我開始使用Jersey 2.x開發一條路徑。 –