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

时间:2016-02-17 15:45:51

标签: java applet converter javacard java-6

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

$ 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.

我的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

我在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.

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

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

2 个答案:

答案 0 :(得分:6)

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

同样,对于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

对于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

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

javap -v -cp classes/ com.sun.javacard.samples.wallet.Wallet |grep 'version'

答案 1 :(得分:3)

您可能希望自动查看执行此类操作的ant-javacard(依赖于JC SDK版本的编译器标记)。 (免责声明:我做到了)

相关问题