Pregunta

Estoy tratando de usar JNI a través de VC ++ y pasar un directorio personalizado en el classpath como una cadena UTF -8 -djava.class.path = c: mydir my.jar

Esto funciona bien y pude encontrar los métodos en el frasco utilizando FindClass

Pero cuando el nombre del directorio contiene caracteres ASCII extendidos, FindClass devuelve la excepción de noclassDefFound. Supongo que esto es porque JVM no puede cargar el archivo JAR y estoy haciendo algo mal al pasar los argumentos.

Esto es lo que hago 1) crea un std :: wstring jarpath (l "-djava.class.path = c: Æëñœ my.jar"); 2) Convierta la WString a CP_UTF8 usando WideChartomultibyte 3) Copie el UTF8String a OptionString y llame a JNI_CreateJavajvm

He intentado imprimir el UTF8 convertado en un archivo de registro justo antes de llamar al JNI_CreateJavajvm y se imprime perfectamente.

¿Podría alguien decir si el CP_UTF8 (definido en Windows SDK Winn; SH) no es lo que el JNI espera? ¿Cómo depuggo este problema? Se agradece mucho cualquier ayuda.

Gracias de antemano Rahul

¿Fue útil?

Solución

los documentación sugiere que la cadena de opción debe estar en "la codificación de plataforma predeterminada". Eso probablemente significa que necesitaría usar CP_ACP. Si tus personajes no pueden representarse en esa codificación, entonces no estoy seguro de que haya mucho que puedas hacer.

(¿Se puede usar el nombre corto del archivo?)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top