我编写了一个 MIDlet,它做了几件“高级”的事情:从网络上获取图像、调整它们的大小、将它们保存在手机上、显示它们。
这一切都在诺基亚 S60 第三版 FP1 模拟器中完美运行。该设备支持 MIDP 2.0 和 CLDC 1.1(还有 JSR75,我需要它来保存文件)。它也可以在诺基亚 E71(物理设备)上正常工作。
然后我尝试在其他几个模拟器上运行 MIDlet。其中之一,来自 Java ME SDK 3.0 的 DefaultCldcJtwiPhone2,也声称支持 MIDP 2.0 和 CLDC 1.1。它没有 JSR75,这解释了为什么“FileConnection 无法解析为类型”。
然而,这并不能解释为什么 List.deleteAll()、String.equalsIgnoreCase(String) 和其他一些是未定义的。
我得到的实际错误:
- 未定义 Math 类型的方法 ceil(double)
- 对于 List 类型,方法 deleteAll() 未定义
- 未为 String 类型定义方法 equalsIgnoreCase(String)
- 对于 Displayable 类型,方法 getWidth() 未定义
当我查看 MIDP 2.0(即 JSR118)API(http://java.sun.com/javame/reference/apis/jsr118/)时,我可以清楚地看到所有这些方法都存在,带有“since”标签是 MIDP 2.0 或 CLDC 1.1。
我的问题:为什么支持 MIDP 2.0 的模拟器不能访问所有 MIDP 2.0 方法?或者,我做错了什么?