程式語言 - Java - Applet - 解決Unsupported major.minor version 51.0問題



問題如下:

$ ./bin/midpath-midlet_launcher.sh -jar ~/j2me/main.jar
    java.lang.UnsupportedClassVersionError: main (Unsupported major.minor version 51.0)
        at java.lang.ClassLoader.loadBootstrapClass0(Native Method)
        at java.lang.ClassLoader.loadBootstrapClassOrNull(Unknown Source)
        at java.lang.ClassLoader.loadBootstrapClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at com.sun.midp.main.BaseMIDletSuiteLauncher$BaseMIDletClassLoader.getMIDletClass(Unknown Source)
        at com.sun.midp.midlet.MIDletStateHandler.createMIDlet(Unknown Source)
        at com.sun.midp.midlet.MIDletStateHandler.createAndRegisterMIDlet(Unknown Source)
        at com.sun.midp.midlet.MIDletStateHandler.startSuite(Unknown Source)
        at com.sun.midp.main.BaseMIDletSuiteLauncher.launch(Unknown Source)
        at com.sun.midp.main.BaseMIDletSuiteLauncher.launch(Unknown Source)
        at org.thenesis.midpath.main.MIDletLauncher.launch(Unknown Source)
        at org.thenesis.midpath.main.MIDletLauncher.launchAndClose(Unknown Source)
        at org.thenesis.midpath.main.MIDletLauncher.launch(Unknown Source)
        at org.thenesis.midpath.main.MIDletLauncher.main(Unknown Source)
        at org.thenesis.midpath.main.MIDletLauncherSE.main(Unknown Source)
        at sun.misc.CVM.runMain(Unknown Source)

解法如下:

# 51.0 => Java 7
# 50.0 => Java 6
# 49.0 => Java 5
# J2ME / CLDC => Java 1.3 bytecode level

# 修改前
$ javac -classpath midpapi20-2.0.4.jar main.java

# 修改後
$ javac -source 1.3 -target 1.1 -classpath midpapi20-2.0.4.jar main.java