我正在實現一款Java軟件,希望允許C庫作爲插件。爲了調用這些將來的函數,我需要以某種方式在Java中創建一個本地函數,從中我可以調用尚不存在的代碼。方法簽名將是靜態的,但方法和類名稱可能會更改。C/C++反射和JNI - 一種調用尚未編寫的本地代碼的方法
有沒有辦法檢查加載的庫或可用函數?我希望它的工作方式如下:
在我的Java類中,我會有一個函數;
public static native void thirdParty(String class, String method, int[] data, int[] params);
這將在我的C庫中調用一個函數;
JNIEXPORT void JNICALL Java_com_ex_app_Native_thirdParty(JNIEnv *, jclass, jstring, jstring, jintArray, jintArray);
從中我可以採取的類和方法名,並呼籲他們,如果他們存在,如果他們不拋出異常。
我想我正在尋找的是某種Java風格的反射,但在C或失敗的C++。
我該如何做到這一點?
此方法是否需要每個插件的新Java代碼?每個插件都提供了一個具有相同參數但執行不同計算的方法。 安裝後將修復java代碼,我想支持不同的C插件庫。 對不起,如果這是你已經回答的問題,我只是想澄清。 – gav 2009-06-10 14:28:24