我正试图通过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_UTF83) 将utf8String复制到optionString并调用JNI_CreateJavaJVM
在调用JNI_CReatJavaJVM之前,我尝试过将转换后的utf8打印到日志文件中,它打印得很完美。
有人能告诉我CP_UTF8(在windows SDK WinN;s.h中定义)是否不是JNI所期望的吗?我该如何调试这个问题,任何帮助都将不胜感激。
提前感谢Rahul
文档建议选项字符串必须为"默认平台编码"。这可能意味着您需要使用CP_ACP。如果你的字符不能用这种编码表示,那么我不确定你能做什么。
(文件的短名称是否可用?)