在调试J2ME程序时,由于继承使用了nokia的FullCanvas类,所以需要在编译的liberary里面加上nokia.zip。此时能在模拟器以及nokia手机上运行,但在eclipse里面启动wtk的phone来调试时,仍然出现找不到FullCanva的错误:
Running in the identified_third_party security domain
java.lang.NoClassDefFoundError: FeeScreen: com/nokia/mid/ui/FullCanvas
at com.sun.midp.midlet.MIDletState.createMIDlet(+29)
at com.sun.midp.midlet.Scheduler.schedule(+52)
分析判断为这些wtk自带的phone在启动时没有带上该包的路径。经过查看属性看到,默认的phone的启动属性是这样的:这里叫做Launch Command Template:
%executable% [%debugPort%|-Xdebug -Xrunjdwp:transport=dt_socket,suspend=y,server=y,address=%debugPort%] -classpath "%classpath%" -Xdevice:%device% [%jadfile%|"-Xdescriptor:%jadfile%"] [%verbose%|-Xverbose:%verbose%] [%heapsize%|-Xheapsize:%heapsize%] [%securityDomain%|-Xdomain:%securityDomain%] %userSpecifiedArguments% [%target%|%target%] [%otaurl%|-Xjam:transient=%otaurl%] 0
说明这里需要获取classpath,那么有两种解决办法:
1、在系统classpath里面把nokia.zip的路径加上
2、在这里更改该template
我选择了第二种,这样不影响其他的程序,于是改为:
%executable% [%debugPort%|-Xdebug -Xrunjdwp:transport=dt_socket,suspend=y,server=y,address=%debugPort%] -classpath "C:/WTK2.5.2_01/lib/nokia.zip;%classpath%" -Xdevice:%device% [%jadfile%|"-Xdescriptor:%jadfile%"] [%verbose%|-Xverbose:%verbose%] [%heapsize%|-Xheapsize:%heapsize%] [%securityDomain%|-Xdomain:%securityDomain%] %userSpecifiedArguments% [%target%|%target%] [%otaurl%|-Xjam:transient=%otaurl%] 0
启动调试成功。配图如下:
点击Manage device,进入:
选择其中一个 edit:
将Launch Command Template 的classpath添加上nokia.zip,保存应用即可。