我正在使用 CLDC 1.1 + MIDP 2.0 。“编译器合规级别”设置为 1.4 。
当我将“编译器合规级别”设置为 1.6 时,出现以下错误:“ALERT: java/lang/ClassFormatError: Bad version information.”。
如何在 J2ME 中使用 java 1.6?
这个答案现在可能已经过时了,请参阅下面的最新答案。
日期:2011 年 4 月
如何在 J2ME 中使用 java 1.6?
你不能
核心原因:J2ME 适用于内存和 cpu 是最大限制的移动设备。
Java ME 是 Java 的一个子集,大多数 ME 特定代码将主要驻留在客户端上,因此您不需要任何特殊版本的 Java 来编译程序。
这里的问题是您使用的 Java 编译器版本在手机发明时并不存在。Java 编译器的版本被写入 .class 编译输出。
理想情况下,您会使用旧版本的 Java 编译项目,但安装旧版本非常困难。因此我们可以自己充当编译器,手动将 .class 输出文件中的版本设置为我们想要的版本,并且我们应该确保我们不使用该版本之后的功能。在这种情况下,我们将针对版本 1.2。
您可以使用编译器的 -source 和 -target 选项来禁止尽可能多的功能,但是许多 javac 编译器对它们可以定位的旧版本有限制,我的 Java 9 (1.9) 可以低至 1.6。您需要手动确保您没有使用 1.2 和 1.6 之间引入的功能
.class 文件中的前 4 个字节是臭名昭著的“CAFEBABE”魔术字符串。字节 5 和 6 通常是 0 字节 7 和 8 是 java 的次要和主要版本。
将字节 8 更改为 0x2E。根据https://en.wikipedia.org/wiki/Java_class_file这对应于版本 1.2 或 Java2。
我们使用 Java2 是因为,正如您在其首字母 J2ME 中看到的那样,Micro Edition 是在 Java 2 中发布的。因此,出于向后兼容性的原因,您可以相当确信手机将运行此类应用程序。如果您需要在此 Java 版本之后引入的功能,只需不断增加版本号,直到再次无法找到您的手机支持的确切 Java 版本。
您不能使用它,因为它是用于与移动设备不兼容的 se 和 ee 版本
j2me 3.0的最新 sdk可用