我目前正在编写一些JNI代码来调用我的JAVA程序中的类。我已经在类中使用静态方法成功完成了这项工作。
目前,当我使用:
jclass proc_jclass = env->FindClass("example/io/struct/JavaClass");
它崩溃了JVM:
java.lang.ClassNotFoundException.<init>(Ljava/lang/String;)V+3
我已经尝试过定义类路径位置,但无济于事。任何帮助将不胜感激。
感谢。
答案 0 :(得分:3)
我自己找到了答案。通过将FindClass直接移动到JNIEXPORT方法下面来解决该问题。正如bmargulies所说,它可能是由env指针被修改引起的。通过将其移动到方法的顶部,可以避免这种情况。查看代码时,我仍然不清楚导致问题的原因,但是当我发现问题时报告不好。另外,顶尖使用变量,即:
env->FindClass(str_class);
str_class用于定义ClassPath,以便您可以快速测试哪些类可以访问而无需重新编译。 - 我知道它显而易见,但在调试时节省了时间。