У меня проблема с получением включенного jar для более крупного проекта, чтобы найти его собственные классы при включении в исполняемый файл jar весенней загрузки.
Следующий код работает при непосредственном запуске jar (например: java -jar module.jar).
jclass clazz = env->FindClass("com/module/Request");
Сбой при запуске в большем весеннем загрузочном фляге
app.jar
|-> BOOT-INF
|-> lib
|-> module.jar //module .class files
|-> classes //app .class files (findClass() searches here?)
|-> META-INF
|-> org
Как мне заставить JNI найти связанный .class файл внутри модуля .jar? Я пробовал то, что чувствует, как все возможные варианты следующего.
env->FindClass("/BOOT-INF/lib/module.jar!/com/module/Request");
env->FindClass("file:/BOOT-INF/lib/module.jar!/com/module/Request");
env->FindClass("jar:file:/BOOT-INF/lib/module.jar!/com/module/Request");
env->FindClass("/home/root/app.jar!/BOOT-INF/lib/module.jar!/com/module/Request");
env->FindClass("file:/home/root/app.jar!/BOOT-INF/lib/module.jar!/com/module/Request");
env->FindClass("jar:file:/home/root/app.jar!/BOOT-INF/lib/module.jar!/com/module/Request");
env->FindClass("/home/root/app.jar!/BOOT-INF/lib/module.jar!/com/module/Request");
env->FindClass("file:/home/root/app.jar!file:/BOOT-INF/lib/module.jar!/com/module/Request");
env->FindClass("jar:file:/home/root/app.jar!jar:file:/BOOT-INF/lib/module.jar!/com/module/Request");
Мой jvm инициализируется с
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved) {
return JNI_VERSION_1_6;
}