JNI FindClass java.lang.ClassNotFoundException

时间:2010-01-23 18:30:13

标签: java-native-interface

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

目前,当我使用:

jclass proc_jclass = env->FindClass("example/io/struct/JavaClass");

它崩溃了JVM:

java.lang.ClassNotFoundException.<init>(Ljava/lang/String;)V+3

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

感谢。

1 个答案:

答案 0 :(得分:3)

我自己找到了答案。通过将FindClass直接移动到JNIEXPORT方法下面来解决该问题。正如bmargulies所说,它可能是由env指针被修改引起的。通过将其移动到方法的顶部,可以避免这种情况。查看代码时,我仍然不清楚导致问题的原因,但是当我发现问题时报告不好。另外,顶尖使用变量,即:

env->FindClass(str_class);

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