JNI FindClass java.lang.ClassNotFoundException

Hug*_*ugh 3 java-native-interface

我目前正在编写一些JNI代码来调用我的JAVA程序中的类。我已经使用类中的静态方法成功完成了此操作。

目前,当我使用时:

jclass proc_jclass = env->FindClass("example/io/struct/JavaClass");
Run Code Online (Sandbox Code Playgroud)

它使JVM崩溃:

java.lang.ClassNotFoundException.<init>(Ljava/lang/String;)V+3
Run Code Online (Sandbox Code Playgroud)

我已经尝试定义类路径位置,但无济于事。任何帮助将不胜感激。

谢谢。

Hug*_*ugh 5

我自己找到了答案。通过将FindClass移到JNIEXPORT方法的正下方可以解决此问题。如bmargulies所述,它可能是由于env指针被修改引起的。通过将其移至方法的顶部,可以避免这种情况。查看代码,仍然不清楚是什么引起了问题,但是当我发现问题时,报告错误。另外,顶端提示使用变量,即:

env->FindClass(str_class);
Run Code Online (Sandbox Code Playgroud)

str_class用于定义ClassPath,以便您可以快速测试哪些类可访问而无需重新编译。-我知道它很明显,但是在调试时确实节省了时间。