Question

J'essaie d'utiliser JNI via VC ++ et de transmettre un répertoire personnalisé dans le chemin de classe en tant que chaîne UTF-8 -Djava.class.path= c: \ myDir \ my.jar

Cela fonctionne bien et j'ai pu trouver les méthodes dans le jar en utilisant FindClass

Mais lorsque le nom du répertoire contient des caractères ASCII étendus, FindClass renvoie l'exception NoClassDefFound. Je suppose que c'est parce que la JVM n'est pas en mesure de charger le fichier jar et que je fais quelque chose de mal en passant les arguments.

Voici ce que je fais 1) Créez un std :: wstring jarPath (L "-Djava.class.path= C: \ ÆËñœ \ my.jar"); 2) Convertissez le wstring en CP_UTF8 en utilisant WideCharToMultiByte 3) copiez l'utf8String dans optionString et appelez JNI_CreateJavaJVM

J'ai essayé d'imprimer l'utf8 converti dans un fichier journal juste avant d'appeler JNI_CReateJavaJVM et il s'imprime parfaitement.

Quelqu'un pourrait-il s'il vous plaît dire si le CP_UTF8 (défini dans Windows SDK WinN; s.h) n'est pas ce que le JNI attend? Comment déboguer ce problème, toute aide est grandement appréciée.

Merci d'avance Rahul

Était-ce utile?

La solution

La documentation suggère que la chaîne d'option doit être dans «l'encodage de plate-forme par défaut».Cela signifie probablement que vous devrez utiliser CP_ACP.Si vos personnages ne peuvent pas être représentés dans cet encodage, je ne suis pas sûr que vous puissiez faire grand-chose.

(Le nom court du fichier serait-il utilisable à la place?)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top