2017-06-02 52 views
0

我有一個通過JNI啓動JVM的C++進程。當JVM通過JNI啓動時重新加載java類路徑

我知道我無法在銷燬它之後初始化JVM。 (Create JVM after destroying it)如果這可以以任何方式完成,則不存在任何問題,因爲我可以提供新的類路徑並再次創建JVM。因此,破壞後無法創建JVM,而是在整個C++過程中保持它。

但我需要在運行時動態更新Java類路徑,因爲新的Java文件是通過我的C++進程創建和編譯的。

有沒有辦法在JVM啓動時通過JNI重新加載Java類路徑?

+0

如何使用JVM的子進程,你可以*銷燬? – Holger

回答

1

使用JVM TI函數AddToBootstrapClassLoaderSearchAddToSystemClassLoaderSearch,可以在運行時添加新的類路徑段。

+0

我明白了。因此,如果我通過一個單獨的Java類調用這些函數,它將從C++獲取類路徑,它會更新JVM的權利? –

+0

@Will_Panda「通過單獨的Java類」是什麼意思?這些是C函數。 – apangin

+0

我誤解了。好的謝謝。我會測試這個並批准答案。 –

相關問題