Я пытаюсь использовать JNI через VC ++ и передать пользовательский каталог в classpath в виде строки UTF-8
-Djava.class.path = C: \ Mydir \ my.jar
Это хорошо работает, и я мог найти методы в банке, используя FindClass
Но когда имя каталога содержит какие-либо расширенные символы ASCII, FindClass возвращает исключение NoClassDefFound. Я думаю, это потому, что JVM не может загрузить файл JAR, и я делаю что-то не так в передаче аргументов.
Вот что я делаю
1) Создайте std :: wstring jarPath (L "-Djava.class.path = C: \ ÆËñœ \ my.jar");
2) Преобразуйте wstring в CP_UTF8, используя WideCharToMultiByte
3) скопируйте utf8String в optionString и вызовите JNI_CreateJavaJVM
Я попытался распечатать преобразованный utf8 в файл журнала непосредственно перед вызовом JNI_CReateJavaJVM, и он отлично печатается.
Может кто-нибудь сказать, является ли CP_UTF8 (определенный в Windows SDK WinN; s.h) не тем, чего ожидает JNI?
Как отладить эту проблему, любая помощь очень ценится.
Заранее спасибо
Рахул