Java Card Converter:不支持的版本50.0的类文件格式

cma*_*ing 5 java applet converter javacard java-6

我正在尝试从Wallet.java生成CAP文件和导出文件,该文件是samples目录下的Java Card SDK中的标准.我编译类,使用转换器并遇到以下问题:

$ javac -g -d classes/ src/com/sun/javacard/samples/wallet/Wallet.java
$ converter -debug -verbose -classdir "$JC_HOME/samples/src" com.sun.javacard.samples.wallet 0xa0:0x0:0x0:0x0:0x62:0x3:0x1:0xc:0x6:0x1 1.0

Java Card 2.2.2 Class File Converter, Version 1.3
Copyright 2005 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.

parsing /home/user/javacard/java_card_kit-2_2_2/samples/src/com/sun/javacard/samples/wallet/Wallet.class
error: com.sun.javacard.samples.wallet.Wallet: unsupported class file format of version 50.0.

conversion completed with 1 errors and 0 warnings.
Run Code Online (Sandbox Code Playgroud)

我的Java版本和javac版本是相同的,Java 1.6:

$ java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
$ javac -version
javac 1.6.0_45
Run Code Online (Sandbox Code Playgroud)

我在Ubuntu 14.04上使用JC SDK 2.2.2.转换器的版本是1.3:

$ converter -version
Java Card 2.2.2 Class File Converter, Version 1.3
Copyright 2005 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.
Run Code Online (Sandbox Code Playgroud)

我似乎无法解决这个"不支持的版本50.0的类文件格式"错误.鉴于Java 1.6是版本50.0,我有点疑惑为什么我遇到这个错误.

还有其他人遇到过同样的问题吗?

Mic*_*and 7

Java Card 2.2.2转换器最多支持Java 5类文件格式(因此它告诉您不支持Java 6 /版本50.0 ).因此,在使用较新的JDK版本编译源代码时,需要指定源兼容性/类文件版本:

javac -g -source 1.5 -target 1.5 -d classes/ src/com/sun/javacard/samples/wallet/Wallet.java
Run Code Online (Sandbox Code Playgroud)

同样,对于Java Card 2.2.1,您将使用1.2版:

javac -g -source 1.2 -target 1.2 -d classes/ src/com/sun/javacard/samples/wallet/Wallet.java
Run Code Online (Sandbox Code Playgroud)

对于Java Card 2.1.1(JC SDK 2.1.2),您将使用1.1版:

javac -g -source 1.1 -target 1.1 -d classes/ src/com/sun/javacard/samples/wallet/Wallet.java
Run Code Online (Sandbox Code Playgroud)

您可以使用Java类文件反汇编程序检查类文件的版本(感谢@cmanning提及此内容):

javap -v -cp classes/ com.sun.javacard.samples.wallet.Wallet |grep 'version'
Run Code Online (Sandbox Code Playgroud)