« Return to Thread: using JDOM 1.1 on Android's Dalvik VM

using JDOM 1.1 on Android's Dalvik VM

by Sean Sullivan-3 :: Rate this Message:

Reply to Author | View in Thread


I'm trying to use JDOM 1.1 on the Android 1.0 platform. 

The Android platform supports most Java 5 API's.  However, java.rmi.* classes are not part of the Android platform.

When I use JDOM 1.1 on Android, I see this error:


W/dalvikvm(  327): VFY: unable to resolve check-cast 98 (Ljava/rmi/RemoteException;) in Lorg/jdom/JDOMException;
W/dalvikvm(  327): VFY:  rejecting opcode 0x1f at 0x003d
W/dalvikvm(  327): VFY:  rejected Lorg/jdom/JDOMException;.getNestedException (Ljava/lang/Throwable;)Ljava/lang/Throwable;
W/dalvikvm(  327): Verifier rejected class Lorg/jdom/JDOMException;
D/AndroidRuntime(  327): Shutting down VM
W/dalvikvm(  327): threadid=3: thread exiting with uncaught exception (group=0x40010e28)
E/AndroidRuntime(  327): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime(  327): java.lang.VerifyError: org.jdom.JDOMException


I looked at the JDOM source code and noticed that org.jdom.JDOMException uses java.rmi.RemoteException:

        if (parent instanceof RemoteException) {
            return ((RemoteException)parent).detail;
        }


In order for this code to run on Android, we would need to eliminate java.rmi.RemoteException from JDOMException.java

One possible fix (?) is to use reflection to retrieve the "detail" field:

        if (parent.getClass().getName().startsWith("java.rmi.")) {
            try    {
                Field f = parent.getClass().getField("detail");
                return (Throwable) f.get(parent);
            } catch (Exception ignore) {
                // ignored
            }
        }

Using 'startsWith' is a hack. The intent is to detect java.rmi.RemoteException as well as all
subclasses of java.rmi.RemoteException from the java.rmi pacakge.

  http://java.sun.com/j2se/1.4.2/docs/api/java/rmi/RemoteException.html

Is there a better way to code this?  Any other comments?

Sean


_______________________________________________
To control your jdom-interest membership:
http://www.jdom.org/mailman/options/jdom-interest/youraddr@...

 « Return to Thread: using JDOM 1.1 on Android's Dalvik VM