This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
wrong/strange exceptions
- From: Marco Trudel <mtrudel at gmx dot ch>
- To: GCC Java <java at gcc dot gnu dot org>
- Date: Sun, 18 Feb 2007 17:11:42 +0100
- Subject: wrong/strange exceptions
Hey all
Here an example of wrong/strange stacktraces. I would expect something like:
----- start -----
Exception in thread "main" java.lang.NullPointerException: TestException
at JniTest.findClass(Native Method)
at JniTest.main(JniTest.java:8)
1. But on Linux, I get:
----- start -----
Exception in thread "main" java.lang.NullPointerException: TestException
at java.lang.reflect.Constructor.newInstance(natConstructor.cc:92)
2. On mingw, without Ranjits patch that breaks jni libs [1], I get:
----- start -----
Exception in thread "main" java.lang.NullPointerException: TestException
at java.lang.VMThrowable.fillInStackTrace(JniTest.exe)
at java.lang.Throwable.<init>(JniTest.exe)
at java.lang.Exception.<init>(JniTest.exe)
at java.lang.RuntimeException.<init>(JniTest.exe)
at java.lang.reflect.Constructor.newInstance(JniTest.exe)
at JniTest.findClass(JniTest.exe)
3. On mingw, with Ranjits patch, I get:
----- start -----
Exception in thread "main" java.lang.NullPointerException: TestException
at
java.lang.reflect.Constructor.newInstance(/usr/local/src/gcc/libjava/classpath/java/util/regex/PatternSyntaxException.java:130)
at
JniTest.findClass(/mnt/daten/tmp/trace-tests/jni-test/JniTest.java:10)
at JniTest.main(/mnt/daten/tmp/trace-tests/jni-test/JniTest.java:9)
Comments to these three results? Especially case 3 seems to have done
something horribly wrong when pointing to
/usr/local/src/gcc/libjava/classpath/java/util/regex/PatternSyntaxException.java:130.
Marco
1: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29477
#include <jni.h>
JNIEXPORT void JNICALL Java_JniTest_findClass(JNIEnv *env, jclass c)
{
jclass cls = (*env)->FindClass(env, "java/lang/NullPointerException");
if (cls != 0) (*env)->ThrowNew(env, cls, "TestException");
}
public class JniTest
{
public static void main(String[] args)
{
System.loadLibrary("jniTest");
System.err.println("----- start -----");
findClass();
System.err.println("----- end -----");
}
private static native void findClass();
}