我正在运行一个已经在诺基亚S60 sdk上部署和运行的midlet应用程序。我想让我的应用程序在每个java和symbian设备上运行。我尝试在 Java_ME_platform_SDK_3.4 上运行该应用程序,但是当我尝试将屏幕从登录切换到主页时代码出错
HomeForm homeForm=new HomeForm(objLoginMidlet, objCommonBean);
Display.getDisplay(objLoginMidlet).setCurrent(homeForm);
主页表单中的代码如下-
class HomeForm extends Form
{
public HomeForm(LoginMidlet objLoginMidlet,CommonBean objCommonBean)
{
this.objLoginMidlet=objLoginMidlet;
this.objCommonBean=objCommonBean;
setTimer();
initHomeForm();
}
}
我的 MIDP 设置为 2.1。即使我将其更改为 2.0,但仍然出现以下异常
警告***绝不能放置不受信任的用户类****在系统类路径上
TRACE: <at java.lang.Error: ClassFormatError: 154>, Exception caught in Display class
java.lang.Error: ClassFormatError: 154
- java.lang.Class.invoke_verify(), bci=0
- java.lang.Class.initialize(), bci=100
- ezypoint.forms.LoginForm.register(LoginForm.java:202)
- ezypoint.forms.LoginForm.commandAction(LoginForm.java:91)
即使我试图更改编译级别,但仍然出现异常。
我不知道诺基亚 S60,但这通常发生在 CLDC 设备上,当部署编译的 Java 类文件而没有"预先验证"它们时。这是在嵌入式 JavaME 设备上运行它们所需的附加构建步骤。请参阅此堆栈溢出问题。
如果您拥有成熟的开发环境,这通常是自动设置的(也许您需要选择相应的目标设备)。但是,如果您尝试自己编译 Java 文件,然后在设备上运行它们,它将崩溃。在这种情况下,您需要使用类文件调用 %YOUR_WTK_HOME%\bin\preverify.exe(并可能添加到 ANT 脚本或类似文件中):
%YOUR_WTK_HOME%binpreverify.exe -classpath <your-classpath> -d <your-destination-dir> <your-source-directory>