我编写了一个MIDlet,它做了几件“高级”的事情:从网络中获取图像,调整大小,在电话中保存它们,显示它们。
这一切都完美地工作在诺基亚S60第三版的FP1模拟器。这个设备支持MIDP2.0和CLDC1.1(也支持JSR75,我需要它来保存文件)。它也可以在诺基亚的E71 (物理设备)上工作。
然后,我尝试在其他几个模拟器上运行MIDlet。其中之一,JavaMESDK3.0中的DefaultCldcJtwiPhone2也声称支持MIDP2.0和CLDC1.1。它没有JSR75,这解释了为什么"FileConnection不能解析为类型“。
然而,这并不能解释为什么List.deleteAll()、String.equalsIgnoreCase(String)和其他几个未定义。
我得到的实际错误:
当我查看MIDP2.0(即JSR118) API (http://java.sun.com/javame/reference/apis/jsr118/)时,我可以清楚地看到所有这些方法都存在,其中的“开始”标记要么是MIDP2.0,要么是CLDC1.1。
我的问题:为什么一个支持MIDP2.0的模拟器不能访问所有的MIDP2.0方法?或者,我做错了什么?
发布于 2010-03-10 09:46:50
听起来,您使用的是在CLDC1.1中定义的方法;您使用的模拟器只能支持CLDC1.0(这肯定可以解释为什么缺少equalsIgnoreCase()以及任何涉及double和float原语的方法)。请参阅完整的API 这里。有关1.0和1.1之间差异的列表,请参见这里。
编辑:检查设备的CLDC版本的一些方法:
1)检查microedition.configuration系统属性(如描述的这里 )。
System.out.println("The CLDC version is: " + System.getProperty("microedition.configuration"));2)检查仅在1.1中支持的类的存在性。
try {
Class.forName("java.lang.ref.WeakReference");
System.out.println("It's CLDC 1.1");
} catch (ClassNotFoundException e) {
System.out.println("It's CLDC 1.0");
}发布于 2011-07-22 08:31:58
Eclipse同时引用cldc_1.0.jar和cldc_1.1.jar (以及midp_2.0.jar和midp_2.1.jar)。
修复它:转到窗口>首选项> Java >设备管理>您的设备>编辑.>库> cldc_1.0.jar >删除
您可以在这里找到更多详细信息:http://thompsonng.blogspot.com/2009/09/j2me-setting-eclipse-to-use-cldc-11.html
发布于 2010-03-10 11:10:28
即使在选择了像DefaultCldcJtwiPhone2一样支持CLDC-1.1的仿真器设备之后,仍然可以将其配置为模拟CLDC-1.0专用手机。
至少Netbeans上的项目属性是这样的。
https://stackoverflow.com/questions/2415778
复制相似问题