我正在尝试从钱包生成CAP文件和导出文件。java,在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.
我的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不支持的类文件格式”错误。鉴于1.6是版本50.0,我有点困惑为什么会遇到这个错误Java1.6是版本50.0。
还有其他人遇到过同样的问题吗?
您可能需要研究自动执行此类操作(如编译器标志取决于JC SDK版本)的ant-javacard。(免责声明:我做到了)
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卡2.2.1,您将使用版本1.2:
javac -g -source 1.2 -target 1.2 -d classes/ src/com/sun/javacard/samples/wallet/Wallet.java
对于Java卡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'
运行时遇到错误,我尝试了Pyspark error-Unsupported class file major version 55和Pyspark.topandas():'Unsupported class file major version 55'中提到的解决方案,但没有成功。 完整错误日志:
问题内容: 我正在尝试以IntelliJ想法编译我的项目。我在外部jar文件中使用类,并且在编译时收到上述错误。 我知道这是说jar文件是使用比IntelliJ正在使用的Java版本更高的Java版本编译的。我的问题是如何使它们兼容?我已经将Mac上的Java更新为1.8,并且在运行时或确认了这一点。 我想念什么?(除Java开发经验外) 问题答案: 选择“文件”->“项目结构”。 在“项目设置”
我正试图用IntelliJ idea编译我的项目。我正在外部jar文件中使用一个类,编译时收到以下错误。 我理解它是说jar文件是用比IntelliJ使用的版本更新的Java版本编译的。我的问题是如何使它们兼容?我已经将Mac上的Java更新为1.8,当我运行或时,它确认了这一点。 我错过了什么?(除了Java开发经验)
我正在将我的项目从jdk1.8切换到openjdk 17。代码工作正常,ANT可以生成可执行jar。使用Eclipse IDE。 尝试使用yGuard 3.0.0(通过ant)进行混淆时出现问题。任务是: 输出为: [收缩]错误:不支持的类文件主要版本61[收缩]不支持的类文件主要版本61 我知道61意味着java 17,所以我尝试将工作区符合性更改为“编译器符合性级别”-
我正在尝试重新构建和编译我的Android Studio项目,在为之前,它运行良好。将该库升级到3.9.1后,我遇到了此错误,我无法修复它。 task的执行失败:react-native-jumio-mobiles dk:compileDebugKotlin。 无法解析配置':react-native-jumio-mobilesdk:debugCompileClasspath'的所有文件。未能转换
配置:Java:16 Gradle:7.2 Jacoco:0.8.4 当我将我的项目从openJDK8升级到openJDk16时,我看到以下问题: “原因:java.lang.IllegalArgumentException:不支持的类文件主版本60” 还有以下问题: java.lang.instrument.IllegalClassFormatException:检测sun/security/e