如何通过C ++通过JNI传递扩展的ASCII字符

时间:2011-06-16 13:04:44

标签: c++ utf-8 java-native-interface extended-ascii

我试图通过VC ++使用JNI并将类路径中的自定义目录作为UTF-8字符串传递 -Djava.class.path = C:\ MYDIR \ my.jar

这很好用,我可以使用FindClass

找到jar中的方法

但是当目录名包含任何扩展的ASCII字符时,FindClass返回NoClassDefFound异常。我想这是因为JVM无法加载jar文件而我在传递参数时做错了。

这是我的工作 1)创建一个std :: wstring jarPath(L“-Djava.class.path = C:\ÆËñœ\ my.jar”); 2)使用WideCharToMultiByte将wstring转换为CP_UTF8 3)将utf8String复制到optionString并调用JNI_CreateJavaJVM

我在调用JNI_CReateJavaJVM之前尝试将convertyed utf8打印到日志文件中并且打印完美。

有人可以告诉我CP_UTF8(在Windows SDK WinN中定义; s.h)是不是JNI所期望的? 如何调试此问题,非常感谢任何帮助。

提前致谢 拉胡

1 个答案:

答案 0 :(得分:0)

documentation表明选项字符串必须位于“默认平台编码”中。这可能意味着您需要使用CP_ACP。如果您的角色无法用该编码表示,那么我不确定您能做多少。

(文件的短名称是否可用?)