我正在为J2me和Blackberry开发一个Javame框架。我从设备中读取了类型(bb或j2me),然后根据检测到的设备加载了正确的类。
执行以下代码时,只有java.lang.error。我认为那是因为我在KuixCanvasBB中使用了j2me不支持的黑莓包。但有没有办法捕捉到这个错误?
KuixCanvas canvas;
if(Settings.j2me) {
System.out.println("j2me");
canvas = new KuixCanvasJ2me(this, isFullscreen());
}
else {
System.out.println("BB");
try {
canvas = new KuixCanvasBB(this, isFullscreen());
//canvas = new KuixCanvasJ2me(this, isFullscreen());
}
catch (java.lang.Error e) {
canvas=null;
}
}
执行上述代码时仍然出现错误:
java.lang.Error: ClassFormatError: 154
- java.lang.Class.invoke_verify(), bci=0
- java.lang.Class.initialize(), bci=117
- java.lang.Class.initialize(), bci=139
- java.lang.Class.forName(), bci=0
我可以在没有应用程序关闭的情况下捕获此错误吗?
答案 0 :(得分:3)
由于许多J2ME虚拟机会在运行任何代码之前验证所有代码,因此即使在许多设备上安装也很容易被拒绝。
更安全的解决方案可能是将此作为构建时决策,因为无论如何您都需要单独的.jar
文件用于最终构建。
您收到错误的原因可能是因为在JVM上输入方法后立即解析对其他类的引用。