using JDOM 1.1 on Android's Dalvik VM

"Sean Sullivan" <[email protected]>
Newsgroups gmane.comp.java.jdom.general
Message-ID <[email protected]>
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/[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.