所以,我想在這裏做一些醜陋的事情,讓我們說這是一種絕望的措施,因爲我無法控制運行時環境。所以說,我在一個我無法控制classpath(壞事)的環境中運行一些代碼......還有更糟糕的是classpath有兩個jar,比如說productV1.jar和productV2。 jar兩者完全一樣,但版本不同,所以它們具有相同的類。通過類加載器忽略JARS醜陋的方式
出於某種原因,在大多數環境中,productV2.jar被加載,而productV1.jar被省略,但在其他一些環境中,productV1.jar被調用,並導致程序崩潰。
我想做的解決方法是與類加載器混淆在一起,顯式忽略「productV1.jar」。理想情況下,通過覆蓋一些類加載函數。我使用其他資源(如Hibernate的persistence.xml文件)完成了此操作,但我不想基於包含類進行過濾,而是基於jar文件進行過濾。有沒有辦法?
這只是爲了工作,直到我能做到的談判擺脫違規罐子......
編輯:我將離開這個問題的情況下,開有一些有趣的黑客。然而,問題在於classpth中的所有內容都是由系統類加載器加載的,並且試圖在運行時切換它並不是一件容易的事情(或者根本不可能?)。我看到的唯一方法是使用自定義類加載器啓動該過程,這不是我正在尋找的過程。
我認爲應該避免做這樣的事情,即使有很好的理由,但從「理論上有可能是什麼」的角度來看問題是有趣的。 – mschenk74 2014-10-02 07:33:30
你真正的問題不是技術問題,而是你的環境。你不能和任何控制設置類路徑來解決問題的人交談嗎?像這樣的解決方法只會讓問題變得更糟。 – SteveD 2014-10-02 08:16:04
事實上,我正在照顧環境,但由於需要時間,我認爲找到一個短期的黑客會很有趣...但是我發現它不會很容易... – Martin 2014-10-02 08:45:04