2016-09-12 55 views
1

是否可以運行兩個不同版本的罐子,但在單個JVM上的不同線程上運行。如果是這樣,請引導我在正確的方向。單個JVM上的獨立線程上的兩個不同版本的罐子

+1

不,最後加載的類文件是將要執行的類文件。這就是類在JVM中加載的方式 – NullPointerException

+2

您可以這樣做,但需要深入參與類加載器層次結構和自定義類加載器。 –

+2

你不需要一個單獨的線程,你只需要兩個ClassLoaders。或者你可以使用'jarjar'這樣的工具來給出不同的版本,不同的包名稱。但是,擁有兩個JVM並且每個JVM只有一個JAR版本可能會更簡單。 –

回答

5

當然,這很可能 - 當使用多個ClassLoader實例時。意思是:當你的每個線程都使用它自己特殊的ClassLoader時,那些線程可以使用「不同」版本的「相同」jar文件。

但是有一句警告:這實在是一個高級話題,你不想輕言放棄!如果你真的有興趣去那裏,你可以找到更多的讀物here

相關問題