【发布时间】:2008-10-18 22:09:22
【问题描述】:
我正在尝试访问 jthrowable 中的消息,同时处理我找不到类时生成的异常。但是,我无法访问 jthrowable 对象上 getMessage() 的消息 ID,我不知道为什么。我尝试将 getMessage 的签名更改为“()Ljava/lang/String”(最后没有分号,但这是必要的,对吧?)没有喜悦。我对此感到困惑。我什至尝试用 toString 替换 getMessage,而 that 没有用。很明显,我在这里做错了什么。
这是我正在使用的代码:
jthrowable java_exception;
jclass java_class;
jmethodID method;
java_exception = (*jEnv)->ExceptionOccurred(jEnv);
assert (java_exception != NULL);
java_class = (*jEnv)->GetObjectClass (jEnv, java_exception);
assert (java_class != NULL);
method = (*jEnv)->GetMethodID (jEnv, java_class, "getMessage", "()Ljava/lang/String;");
if (method == NULL) {
printf ("Seriously, how do I get here?!\n");
(*jEnv)->ExceptionDescribe (jEnv);
return;
}
这段代码的输出(除其他外)如下所示:
说真的,我怎么到这里?!
线程“main”中的异常 java.lang.NoClassDefFoundError: com/planet/core360/docgen/Processor
javap -p -s java.lang.Throwable 给了我这个:
编译自“Throwable.java”
公共类 java.lang.Throwable 扩展 java.lang.Object 实现 java.io.Serializable{
...
公共 java.lang.String getMessage();
签名:()Ljava/lang/String;
...
【问题讨论】:
标签: java exception-handling java-native-interface