我的应用程序出现“Unsupported major.minor version 52.0”错误

126

我正在编译我的Android项目,但是出现了这个错误

[INFO] Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0
[INFO]  at java.lang.ClassLoader.defineClass1(Native Method)
[INFO]  at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
[INFO]  at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
[INFO]  at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
[INFO]  at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
[INFO]  at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
[INFO]  at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[INFO]  at java.security.AccessController.doPrivileged(Native Method)
[INFO]  at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[INFO]  at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
[INFO]  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[INFO]  at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
[INFO]  at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

我在其他文章中读到编译Java 8可能会导致这个错误,但这不是我的情况。我有以下Java版本:

java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu0.14.04.2)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)

操作系统:Linux Mint (我没有安装Java 8。) 构建工具:MAVEN

有人能帮我解决这个问题吗?


2
看起来你可能正在使用Java 8编译的库,而本地JDK是7。 - Taylor
4
切换至JDK 8,或使用包含com/android/dx/command/Main的旧版本库。 - Taylor
1
无法在我所在的地方使用聊天功能。 - Taylor
我们可以聊天吗?@Taylor - Rafael Reyes
你可以在 https://dev59.com/slsV5IYBdhLWcg3wsQnf#37827161 找到详细的答案。 - Habel Philip
显示剩余11条评论
28个回答

236

我在使用Android Studio创建新项目时也遇到了这个问题。

我已经通过将应用程序gradle设置中的buildToolsVersion版本降级来解决了这个问题:

更改{module-name}/build.gradle行

buildToolsVersion "24.0.0 rc1"

buildToolsVersion "23.0.3"


@Edit:

在Android Studio 2.1中,转到 文件->项目结构->应用程序->构建工具版本。 将其更改为23.0.3

仅当您使用Java版本7且出于某种原因不想升级到Java 8时,请执行上述方法。


1
@RudyKurniawan 你好,我猜测版本号是<version>4.1.1.4</version>。 - Rafael Reyes
2
较新的版本:buildToolsVersion "23.0.3" - XurajB
1
谢谢您的回答,确实有帮助。但是如果我们需要构建24怎么办? - Shridutt Kothari
2
请使用Java 8构建您的应用程序。 - Rudy Kurniawan
@GuidoG 找到 Android SDK 文件夹,进入 tools 文件夹,运行 android.bat,找到 Tools 并取消选择较高版本的构建工具,选择较低版本。 - Gekon
显示剩余8条评论

43

Gradle脚本 >> build.gradle (Module app)

buildToolsVersion "24.0.0"更改为buildToolsVersion "23.0.3"

来源:经验


10
为什么你建议降级?这会有什么影响? - J Fabian Meier
为什么23.0.3更好? - IgorGanapolsky

31

最初,我根据Rudy Kurniawan的回答,将buildToolsVersion24.0.0 rc3降级到23.0.3。但是后来我注意到我的项目设置中指定了jdk 7。我已将其更改为jdk 8,现在24.0.0 rc3构建工具可以正常使用。

enter image description here

同时,将编译选项设置为java7也很重要:

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

这解决了我在AndroidStudio 2中遇到的问题。我一直收到一堆奇怪的错误。 - wmac
使用最新的buildToolsVersion 25.0.1,需要Java 8。 - IgorGanapolsky

14

我在已经安装的Xamarin Visual Studio旁边安装了Android Studio。安装完成后(因为SDK已经安装),我启动了Android Studio并给出了SDK的路径后,它下载、安装并添加了缺失的SDKs。但是在构建过程中我收到了错误消息:

java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0

解决方法是我安装了 jdk-8u101-windows-i586.exe(未安装JRE)。之前我试过x64版本,但它消失了...然后您需要更改Java Development Kit location

更改JDK位置

这可以通过点击“工具”>“选项”> “Xamarin”>“Android设置”在Visual Studio中完成。在此处您可以导航到正确的位置。在我的情况下,它是C:\Program Files (x86)\Java\jdk1.8.0_101

最后,清除项目并进行新的构建 :-)


或者将AndroidSdkBuildToolsVersion MSBuild属性设置为早期版本。例如,如果您还安装了23.0.3版本,则可以在Android项目.csproj文件的顶部<PropertyGroup>元素中添加以下行:<AndroidSdkBuildToolsVersion>23.0.3</AndroidSdkBuildToolsVersion>。 - samus

8
问题指明:

异常信息:"main"线程中的java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : 不支持的 major.minor 版本 52。

这是因为在 build.gradle 中声明了 buildToolsVersion 24,而我们没有安装 Java 8,而该版本需要它。要解决这个问题,我们需要将 buildToolsVersion 从 24 改为最高的 23:

enter image description here

未来Android Studio将必须使用Java 8,因此我们必须开始使用Java 8。


6

我在使用IntelliJ Maven构建时遇到了同样的问题。我的“解决方案”是进入构建工具并删除构建工具24.0.0文件夹。我在{android-sdk-location}/build-tools/目录下找到了它。这不是长期的解决方案,但至少可以让您的项目再次构建。升级到像许多人建议的Java 8将是更好的长期解决方案。


这是我能够使用的第一个选项,因为我在Android Studio的用户界面中找不到其他答案中提到的设置。我将其删除,然后创建了一个新项目,它起作用了。 - Mitch

5
我在使用eclipse创建新项目时也遇到了这个问题。
  1. Open your eclipse installation directory
  2. Open the file eclipse.ini
  3. Modify

    Dosgi.requiredJavaVersion=1.6 
    

    to

    Dosgi.requiredJavaVersion=1.7
    
希望这能有所帮助。

我在/Applications/eclipse/configuration/config.ini文件中添加了"Dosgi.requiredJavaVersion=1.7"这一行。在我的macOS Sierra上运行得非常完美。 - Bob Cheng
你为什么认为OP的问题与Eclipse有关? - IgorGanapolsky

5

没有人提到的是,使用Build Tools 24.0.0需要Java 8,而大多数人只有1.6或1.7。

所以,将构建工具设置为23.x.x可以“解决”问题,但根本原因是您系统上的Java版本。

从长远来看,您可能希望升级开发环境以使用JDK8,以利用新的语言增强和jack编译器。


5

如何做到这一点? - GuidoG
@GuidoG 你需要按照你特定操作系统的安装说明进行操作。只需在Google上搜索,你就可以获得详细的说明。目标是能够从命令行运行 java -version 并将其显示为 1.8 - IgorGanapolsky

4

抱歉回复晚了,希望能对其他人有所帮助

这个问题与您的SDK相关,而不是与您的JDK相关。 您可以从

帮助 > 关于 > 显示详细信息

中检查您的版本信息。

Xamarin.Android 版本:6.0.2.1(入门版) Android SDK: X:\Android\android-sdk

支持的 Android 版本:

4.0.3(API级别15)

4.4(API级别19)

6.0(API级别23)

SDK 工具版本:24.4.1

SDK 平台工具版本:23.0.1

SDK 构建工具版本:24 rc2

Java SDK:X:\Program Files (x86)\Java\jdk1.7.0_71

java 版本 "1.7.0_71"

Java(TM) SE Runtime Environment (build 1.7.0_71-b14)

Java HotSpot(TM) Client VM (build 24.71-b01, mixed mode, sharing)

如果您正在使用预览工具进行构建,则会在各个地方遇到类似的错误。

现在该怎么做?

前往

工具 -> SDK 管理器

  1. 选择预览通道中的所有项目,包括带有 rev 24rc2 或 24rc4(最新版)的 Android SDK 构建工具

  2. 点击“删除 'n' 包”

如何关闭预览频道?

  1. 在 SDK 管理器中,选择

    工具 > 选项

  2. 取消选中 启用预览工具

然后呢?

回到您的代码,清除所有重新构建 (在极少数情况下,您需要从项目设置页面选择构建工具)


这对我很有效。但在此之前,我安装了jdk 8并按另一个答案中描述的更改了目录。 - Abdur Rahim
Xamarin与OP的问题有何关联? - IgorGanapolsky
或者将AndroidSdkBuildToolsVersion MSBuild属性设置为早期版本。例如,如果您还安装了23.0.3版本,则可以在Android项目.csproj文件的顶部<PropertyGroup>元素内添加以下行: <AndroidSdkBuildToolsVersion>23.0.3</AndroidSdkBuildToolsVersion> - samus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接