用C加載虛拟機,FindClass()一直為NULL。這找不到還怎麼玩啊。于是上網搜尋,試了各種辦法并沒成功。
FindClass()的類名字串,分隔符應該是/,這個不多說。
後來看到别人的代碼寫法跟自己不一樣,于是改了一下,正确了。原因也明白了。
- 錯誤
char buffer[128] = {0};
sprintf(buffer, "-Djava.class.path=%s", jar);
options[0].optionString = buffer;
....
這個buffer是臨時變量,傳遞過去之後,函數調用結束就釋放了,使用時就出錯了。吾以為會自行複制,實際上沒有。
- 正确
options[0].optionString = strdup(buffer);
通過strdup()複制一份,因為是malloc的,隻要不釋放就能用。