Frage

Ich versuche, die hessische J2ME -Implementierung @ zu verwenden http://hessian.caucho.com/ Verwenden Sie Java ME SDK 3.0.

http://hessian.caucho.com/doc/hessian-overview.xtp#hessian%20client%20for%20a%20cell-phone erwähnt die Verwendung für J2ME.

Die Anwendung baut ohne Fehler/Warnung auf. Aber in dem Moment der Linie wo MicroHessianOutput ist instanziiert ist getroffen, ein Klassenformaterror ( java.lang.Error: ClassFormatError: 56) ist geworfen.

Hier ist die Spur:

TRACE: <at java.lang.Error: ClassFormatError:  56>, startApp threw an Exception
java.lang.Error: ClassFormatError:  56
 - alert.AlertDemo.showOption(), bci=26
 - alert.AlertDemo.startApp(), bci=9
 - javax.microedition.midlet.MIDletTunnelImpl.callStartApp(), bci=1
 - com.sun.midp.midlet.MIDletPeer.startApp(), bci=7
 - com.sun.midp.midlet.MIDletStateHandler.startSuite(), bci=269
 - com.sun.midp.main.AbstractMIDletSuiteLoader.startSuite(), bci=52
 - com.sun.midp.main.CldcMIDletSuiteLoader.startSuite(), bci=8
 - com.sun.midp.main.AbstractMIDletSuiteLoader.runMIDletSuite(), bci=161
 - com.sun.midp.main.AppIsolateMIDletSuiteLoader.main(), bci=26

und Heres ShowOption ():

private void showOption () throws Exception{
       String url = "http://localhost/hello";

        HttpConnection c = (HttpConnection) Connector.open(url);

        c.setRequestMethod(HttpConnection.POST);

        OutputStream os = c.openOutputStream();
        MicroHessianOutput out = new MicroHessianOutput(os); //error throwing line
        /*
        out.startCall("hello");

        InputStream is = c.openInputStream();

        MicroHessianInput min = new MicroHessianInput(is);
        min.startReply();
        System.out.println(min.readString());
        */
    }

Ich habe JDK 1.6U16 installiert. Ich denke, es könnte daran liegen, dass die Klassen in der Bibliothek für einen älteren JDK geschrieben wurden. Ich sehe keine Option in der IDE, um dies zu konfigurieren.

Hier ist der Klassenquellcode: Microhessianoutput

Irgendeine Idee, warum das passieren könnte?

War es hilfreich?

Lösung

Classformaterror tritt auf, wenn Ihr JVM eine Klasse nicht laden kann, da sie nicht erkennt, dass es sich um das Format handelt (z. B. JVM 1.4, der versucht, die von Javac 1.5 zusammengestellte Klasse zu laden).

Es ist wahrscheinlich, dass J2ME ein älteres Ziel für Klassen benötigt. Versuchen Sie, Ihr hessisches Zeug mit neu zu kompilieren

 javac -target 1.4 ...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top