Domanda

Sto cercando di usare JNI tramite VC ++ e passare una directory personalizzata nella classpath come stringa UTF -8 -djava.class.path = c: mydir my.jar

Funziona bene e ho potuto trovare i metodi nel vaso usando FindClass

Ma quando il nome della directory contiene caratteri ASCII estesi, FindClass restituisce l'eccezione NoClassDefFound.Immagino che ciò sia dovuto al fatto che la JVM non è in grado di caricare il file jar e sto facendo qualcosa di sbagliato nel passare gli argomenti.

Ecco cosa faccio 1) Crea una std :: wstring jarpath (l "-djava.class.path = c: æëñœ my.jar");2) Converti il ​​wstring in cp_utf8 usando widechartomultibyte 3) Copia UTF8String su OptionsRing e chiama Jni_Createjavajvm

Ho provato a stampare l'utf8 convertito in un file di registro subito prima di chiamare JNI_CReateJavaJVM e viene stampato perfettamente.

Qualcuno potrebbe dire se CP_UTF8 (definito nell'SDK di Windows WinN;s.h) non è quello che si aspetta JNI?Come eseguo il debug di questo problema, qualsiasi aiuto è molto apprezzato.

Grazie in anticipo Rahul

È stato utile?

Soluzione

IL documentazione suggerisce che la stringa dell'opzione deve essere nella "codifica predefinita della piattaforma".Ciò probabilmente significa che dovresti utilizzare CP_ACP.Se i tuoi personaggi non possono essere rappresentati in quella codifica, non sono sicuro che ci sia molto che puoi fare.

(Sarebbe invece utilizzabile il nome breve del file?)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top