2011-06-16 85 views
1

我想通過VC++使用JNI並在類路徑中傳遞一個自定義目錄作爲UTF-8字符串 -Djava.class.path = c:\ myDir \ my。罐子如何通過C++通過JNI傳遞擴展的ASCII字符

這工作得很好,我可以使用的findClass

發現罐中的方法,但是,當目錄名稱包含任何擴展ASCII字符,然後返回findClass的例外NoClassDefFound。我想這是因爲JVM無法加載jar文件,而我在傳遞參數時做了錯誤。

這是我做的 1)創建一個std :: wstring jarPath(L「-Djava.class.path = C:\ÆËñœ\ my.jar」); 2)使用調用WideCharToMultiByte 3轉換的wstring的,以CP_UTF8)的UTF8字符串複製到optionString,只是調用JNI_CReateJavaJVM之前調用JNI_CreateJavaJVM

我試圖打印convertyed UTF8到一個日誌文件,它完美的打印。

有人請告訴CP_UTF8(在windows SDK WinN; s.h中定義)是不是JNI期望的? 如何調試此問題,非常感謝任何幫助。

在此先感謝 拉胡爾

回答

0

documentation表明選項字符串必須在「默認平臺編碼」。這可能意味着你需要使用CP_ACP。如果你的角色不能用這種編碼表示,那麼我不確定你能做什麼。

(請問該文件的名稱縮寫是可用的呢?)

+0

我發現對JVM http://bugs.sun.com/view_bug.do;jsessionid=17ba063642304ad90e9249db234?bug_id=4858889 – Rahul 2011-06-17 03:09:18

+0

嗨阿蘭以下錯誤, CP_ACP運作良好。但是你說的可能性存在,並且它很可能會失敗,但無論如何它只比支持127個ASCII字符好得多。 – Rahul 2011-06-17 04:18:37

+0

我嘗試給JVM提供相對路徑,例如JAR位於我的產品安裝目錄中,該目錄中還包含其自己的JVM(位於當前安裝目錄中)。所以我想我會給JVM的相對路徑。但是這不起作用。 – Rahul 2011-06-17 04:20:46