gradlew编译时出现Unsupported major.minor version 52.0

Android apk命令行编译时,出现如下错误:Unsupported major.minor version 52.0

先摆上结论:

1.有可能是compileSdkVersion和buildToolVersion版本不一致所致;

2.也有可能是编译环境Java版本和jks生成的Java版本不一致所致,此demo就是这种情况。


接下来大致记录一下这个案例,还是那句话,好记性不如烂笔头微笑

user@swd3:/local/sdb/GAPPSRC/NfcCardRead$ ~/Android/Sdk/build-tools/25.0.3/apksigner \
sign --ks /usr/lib/jvm/java-8-openjdk-amd64/bin/bbb_aosp.jks \
--out NfcCardRead-release-signed-aligned.apk NfcCardRead-release-unsigned-aligned.apk 
Exception in thread "main" java.lang.UnsupportedClassVersionError:
 com/android/apksigner/ApkSignerTool : Unsupported major.minor version 52.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

由以上的输出可知,apksigner命令来自SDK v25.0.3,起初怀疑时sdk build tools版本的问题,去检查build.gradle,发现compileSdkVersion和buildToolVersion版本是一致的。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "com.knealq.user.nfccardread"
        minSdkVersion 23
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}


再回到上述命令,其它命令均来SDK v25.0.3目录,唯有签名文件jks是通过Java 8目录中命令生成的,因此查看当前终端Java版本,发现果然不一致。


最后,更新终端Java版本,重新执行./gradlew assembleRelease命令,重新签名。当再次执行到此命令时,通过。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,"Unsupported major.minor version 52.0"错误通常是由于编译使用的Java版本与运行使用的Java版本不兼容导致的。具体来说,错误消息中的"52.0"表示编译使用的Java版本为Java 8,而运行使用的Java版本较低。 要解决这个问题,你可以尝试以下几种方法: 1. 确保你的MyEclipse配置正确:确保你在MyEclipse中正确配置了Java版本。你可以在MyEclipse的项目属性中检查和更改Java版本。 2. 更新你的Java版本:如果你的运行Java版本较低,你可以尝试更新到与编译Java版本兼容的版本。你可以从Oracle官方网站下载并安装最新的Java Development Kit(JDK)。 3. 检查你的项目依赖:如果你的项目依赖于其他库或框架,确保这些库或框架与你的Java版本兼容。你可以查看这些库或框架的文档或官方网站以获取更多信息。 4. 检查你的构建工具:如果你使用的是构建工具(如Maven或Gradle),确保你的构建工具配置正确,并且使用的Java版本与你的项目要求一致。 5. 清除和重新构建项目:有候,清除项目并重新构建可以解决版本不兼容的问题。你可以尝试在MyEclipse中执行"Clean"操作,并重新构建你的项目。 希望以上方法能够帮助你解决"MyEclipse Unsupported major.minor version 52.0"错误。如果问题仍然存在,请提供更多详细信息,以便我能够更好地帮助你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值