我正在尝试使用java me SDK3.0的hessian j2me实现@ http://hessian.caucho.com/。
http://hessian.caucho.com/doc/hessian-overview.xtp#Hessian%20Client%20for%20a%20cell-phone提到了j2me的用法。
应用程序构建时没有任何错误/警告。但是,一旦命中实例化MicroHessianOutput的行,就会抛出ClassFormatError ( java.lang.Error: ClassFormatError: 56 )。
下面是跟踪信息:
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下面是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());
*/
}我安装了jdk 1.6u16。我认为这可能是因为库中的类可能是为较旧的jdk编写的。我在IDE中看不到任何选项来配置它。
下面是类的源代码:MicroHessianOutput
你知道为什么会发生这种事吗?
发布于 2009-11-07 00:43:00
当你的JVM因为不能识别它的格式而不能加载一个类时,就会发生ClassFormatError (例如,JVM1.4试图加载由javac1.5编译的类)。
J2ME很可能需要一个更老的类目标。尝试使用以下命令重新编译您的Hessian代码
javac -target 1.4 ...https://stackoverflow.com/questions/1688257
复制相似问题