1

我正在尝试通过 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 之前,我尝试将转换后的 utf8 打印到日志文件中,并且打印效果很好。

有人能告诉我 CP_UTF8(在 windows SDK WinN;sh 中定义)是否不是 JNI 所期望的吗?我该如何调试这个问题,非常感谢任何帮助。

提前感谢拉胡尔

4

1 回答 1

0

文档建议选项字符串必须采用“默认平台编码” 。这可能意味着您需要使用 CP_ACP。如果您的字符无法以该编码表示,那么我不确定您能做多少。

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

于 2011-06-16T13:25:28.703 回答