我想創建一個運行的應用程序,並且它有一個文件夾,它將包含帶有迷你遊戲的jar文件。我想單獨創建這些小遊戲,因爲這將更容易交換遊戲。我只是不知道如何將這些jar文件加載到其他已經運行的應用程序中,以便我可以訪問jar文件中的類並使用我的註釋調用正確的方法。JAVA - 在啓動時運行外部jar文件
因此,TL; DR,如何在運行時將類添加到我的類路徑中?
隨着親切的問候, 斯坦
我想創建一個運行的應用程序,並且它有一個文件夾,它將包含帶有迷你遊戲的jar文件。我想單獨創建這些小遊戲,因爲這將更容易交換遊戲。我只是不知道如何將這些jar文件加載到其他已經運行的應用程序中,以便我可以訪問jar文件中的類並使用我的註釋調用正確的方法。JAVA - 在啓動時運行外部jar文件
因此,TL; DR,如何在運行時將類添加到我的類路徑中?
隨着親切的問候, 斯坦
你在做什麼可能是不走,在我看來最好的辦法。 這就是說,這將幫助你實現你想要的結果:
Java與ClassLoader
一起工作,它是一個Java對象,它從特定路徑加載類,通常是Java class_path。爲了動態加載罐子,您可以簡單地創建一個URLClassLoader
,其中URL
引用您的罐子,或者將罐子URL
添加到當前的ClassLoader
或系統ClassLoader
,具體取決於您的用例。一旦你加載了jar,你就可以實例化你的Java類的一個實例。 以下是與特定的JAR創建新Classloader
的例子:
URL url = new File(jarPath).toURI().toURL();
URLClassLoader classLoader = new URLClassLoader(url);
Object yourObject = Class.forName(className, true, classLoader).newInstance();
當然,你應該在新的實例創建適應類等
你介意分享一下你認爲最好的方法嗎?感謝答案btw,工作。 – Stannies
@Stannies當您需要動態加載構建時未知的罐子時,使用此代碼。如果罐子是事先知道的,只需將它們全部放在項目的class_path中,然後就可以參考它們的類而不需要加載罐子等。 – zuckermanori
何謂'上runtime'添加類?沒有得到它在你的應用程序中想要的運行時行爲。 – Ankit
@Ankit當主應用程序第一次運行時,我需要能夠將jar文件添加到類路徑中。所以我可以很容易地交換'minigames'(jar文件) – Stannies