我的应用中不支持的major.minor 52.0版本


127

我正在尝试编译我的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(我没有安装Java8。)内部版本:MAVEN

谁能帮我这个?


1
看起来,你可能会使用的Java 8编译库与当地的JDK 7
泰勒

我该如何解决?@Taylor
拉斐尔·雷耶斯

3
切换到jdk 8,或使用包含以下内容的较旧版本的库com/android/dx/command/Main
Taylor,

我不允许切换到jdk 8,如何降级包含com / android / dx / command / Main的库的版本?@泰勒
拉斐尔·雷耶斯

您在构建和依赖管理中使用什么?Maven?
泰勒

Answers:


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时,才执行上述方法。

希望这可以帮助


@RafaelReyes我对使用Maven构建android项目一无所知。但是由于Android仍然使用构建工具,因此您无法找到在Maven配置中使用的构建工具版本是什么版本?
Rudy Kurniawan

1
@RudyKurniawanHi,我猜是<version> 4.1.1.4 </ version>
拉斐尔·雷耶斯

2
较新的版本:buildToolsVersion“ 23.0.3”
XurajB '16

1
它有助于感谢您的回答,但是如果我们需要构建24,该怎么办?
shridutt kothari '16

2
为此,您应该使用Java 8来构建您的应用程序
Rudy Kurniawan


31

最初,我曾降级buildToolsVersion24.0.0 rc323.0.3,如鲁迪·库尼瓦恩的回答中指定。然后我注意到我在项目设置中指定了jdk 7。我将其更改为jdk 8,现在可以24.0.0 rc3正常工作了。

在此处输入图片说明

将编译选项设置为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(在提供了指向SDK位置的路径之后)。结果我在构建时收到错误消息

java.lang.UnsupportedClassVersionError:com / android / dx / command / Main:不支持的major.minor版本52.0

作为解决方案,我jdk-8u101-windows-i586.exe没有安装JRE(因为它已经安装)。在尝试使用x64版本之前,它已经消失了……然后,您必须更改Java Development Kit的位置

更改JDK位置

这是在Visual Studio中通过单击工具>选项> Xamarin> Android设置来完成的。在这里您可以导航到正确的位置。就我而言C:\Program Files (x86)\Java\jdk1.8.0_101

最后,清理您的项目并新建一个:-)


“或将AndroidSdkBuildToolsVersion MSBuild属性设置为早期版本。例如,如果还安装了版本23.0.3,则可以在Android项目.csproj文件的顶部<PropertyGroup>元素中添加以下行:<AndroidSdkBuildToolsVersion> 23.0 .3 </ AndroidSdkBuildToolsVersion>“ ref: releases.xamarin.com/…–
samis

8

指定的问题:

线程“主”中的异常java.lang.UnsupportedClassVersionError:com / android / dx / command / Main:不支持的major.minor 52版。

是在中声明时引起的build.gradlebuildToolsVersion 24并且我们没有安装此版本所需的Java 8。为了解决这个问题,我们必须buildToolsVersion从24 更改为最大值23:

在此处输入图片说明

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


6

我的IntelliJ Maven版本也遇到了同样的问题。我的“解决方案”是进入构建工具并删除构建工具24.0.0文件夹。我在{android-sdk-location}/build-tools/目录中找到它。这不是一个长期的解决方案,但这至少应该可以使您的项目重新构建。长期以来,升级到Java 8的建议会更好。


这是我实际可以使用的第一个选项,因为我找不到Android Studio用户界面中其他答案中提到的设置。我删除了它,然后创建了一个新项目,它可以正常工作。
米奇

5

在Eclipse中制作新项目时,我也遇到了这个问题。

  1. 打开eclipse安装目录
  2. 打开文件eclipse.ini
  3. 修改

    Dosgi.requiredJavaVersion=1.6 

    Dosgi.requiredJavaVersion=1.7

希望这可以帮助


我在“ /Applications/eclipse/configuration/config.ini”行中附加了“ Dosgi.requiredJavaVersion = 1.7”行,可在我的macOS Sierra上完美运行
Bob Cheng

是什么让您认为OP的问题与Eclipse有关?
IgorGanapolsky '16

5

这里没有人说的是,对于Build Tools 24.0.0,需要Java 8,并且大多数人使用1.6或1.7。

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

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


5

52是JDK 8的代码。您可以在这里看到它:http : //javarevisited.blogspot.com/2015/05/fixing-unsupported-majorminor-version.html。因此Gradle希望您将JDK 8作为计算机上的默认Java版本。适用于Android的最新版本的Gradle无法与Java 7一起使用。

解决方案很简单:将Java 8设置为计算机上的默认jdk版本。


那是怎么做到的?
GuidoG

@GuidoG您需要按照特定操作系统的安装说明进行操作。只是谷歌它,你会得到详细的说明。目的是能够从命令行运行java -version并将其视为1.8
IgorGanapolsky'3

4

我在Android Studio 2.0上并且面临相同的问题。Rudy Kurniawan提供的解决方案解决了这个问题。受影响的文件可以通过以下方式找到:

“项目”->“ Android”->“ Gradle Scripts”->“ build.gradle(Module:app)”

默认情况下,“ 项目 ”窗格位于左侧。要找到它,请检查侧面选项卡的名称,单击它,然后使用顶部的下拉框转到“ Android ”。展开窗格中的树以找到目标文件。双击以进行编辑。


我正在使用Maven Build进行Intellij IDEA。
拉斐尔·雷耶斯

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运行时环境(内部版本1.7.0_71-b14)

Java HotSpot(TM)客户端VM(内部版本24.71-b01,混合模式,共享)

如果您使用预览工具进行构建,则将遍历类似错误。

现在要做什么?

工具-> SDK管理器

  1. 选择预览频道中的所有项目,包括Android SDK build tools带有rev 24rc224rc4(最新)的项目

  2. 点击 Delete 'n' packages

如何关闭预览频道

  1. 在SDK管理器中,选择

    工具>选项

  2. 取消选中 Enable preview tools

还有什么

返回您的代码 全部清理重建 (在极少数情况下,您必须从项目设置页中选择构建工具)


这对我来说很好。但在此之前,我安装了jdk 8并按照此处的另一个答案中的描述更改了目录,
Abdur Ra​​him

Xamarin与OP的问题有何关系?
IgorGanapolsky '16

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

2

谢谢大家的解决方案。

我可以使用以下解决方案来解决我的相同问题。

在我的项目中,我添加了用Java8创建的jar。我的项目是指JRE7。当我将项目JRE更改为8时,问题解决了。

步骤:在Eclipse中,右键单击项目浏览器中的项目名称>构建路径>库>单击jre版本>单击编辑>已安装的JRE>添加>标准VM>选择JRE主页单击路径(路径应为localePath \ java \ jdk1 .8.0_25 \ jre)>提供名称>保存>为项目选择相同的JRE>完成>确定一次刷新/构建项目>尝试运行Java文件。它应该工作。


2

在travis构建服务器上得到此错误消息?

我使用此工具通过buildToolsVersion “ 24.0.2”修复了travis构建

# travis build 
language: android

jdk:
  - oraclejdk8

android:
  components:
    - tools
    - build-tools-24.0.2
    - android-23

    - add-on
    - extra

script:
  - jdk_switcher use oraclejdk8
  - ./gradlew assemble

没错。当我尝试修复travis版本时,发现这个问题对我没有帮助。在我找到解决方法后,我将其添加到了具有相同问题的其他用户中
k3b

2

在我的情况下,默认的jdk为1.7,然后通过浏览到找到更新的jdk的确切文件夹将其更改为1.8。


这对我有用!需要安装并定位了1.8版的jdk
hewstone,

1

我遇到了同样的问题,并尝试更改版本,有时是针对Project> Gradle Scripts> build.gradle(Module:app)中的Android Studio版本,您可以更改版本。例如:

android {
    compileSdkVersion **23**
    buildToolsVersion **"23.0.3"**

    defaultConfig {
        applicationId "com.example.android.myapplication"
        minSdkVersion **19**
        targetSdkVersion **23**
        versionCode **1**
        versionName **"1.0"**
    }

1

这个问题。

您可以尝试在使用的IDE中将编译器级别更改回1.7。

  • 如果您使用的是Eclipse,请转到Windows ---> Prefences,然后选择Java并展开它,然后选择Compiler,然后将遵从性级别更改为1.7。
  • 如果您使用的是Android Studio,则可以将其添加到build.gradle

    android {
        compileSdkVersion 19
        buildToolsVersion "19.0.0"
    
        defaultConfig {
            minSdkVersion 7
            targetSdkVersion 19
        }
    
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
        }
    }

如果这样做没有帮助,请尝试在上述链接中检查其他人的答案,并告诉我们有什么帮助您。


1
我正在使用Maven和IntelliJ。
拉斐尔·雷耶斯

在这种情况下,您可以在Maven编译器插件上将源和目标更改为1.7内部配置
cristianorbs

1

您的Android构建工具未正确安装。尝试安装其他版本的构建工具,并在gradle文件中提供该版本。或者你可以去这个目录

C:\ Users \\ AppData \ Local \ Android \ sdk \ build-tools

并查看安装了哪些构建工具。尝试在gradle文件中更改构建工具版本,然后编译应用程序以查看其是否正常运行。

我有22.0.1、23.0.02和24.0.0版本的构建工具,只有旧的22.0.1版本有效。

资料来源:我自己尝试过,对我有用。


1

此问题源于您的构建工具版本和JDK无法协同工作的事实。我使用的是带有构建工具24.0.1的JDK版本7。当然,降低构建工具的版本可能会解决此问题,但这并不是真正的解决方法,因为将来升级构建工具会再次破坏它。

您应该确保构建工具版本和JDK可以一起使用。我将构建工具升级到最新版本(24.0.1),并安装了jdk8。确保将您的JAVA_HOME设置为最新,然后尝试全新构建。


1

尝试从命令行使用sdk为Cordova进行构建时,在Android Studio之外也遇到了相同的问题(cordova构建android)。

在这种情况下,Rudy提供的解决方案也适用。您只是没有从Android Studio降级Build Tools的版本,而是使用android sdk manager ui进行了降级。


0

我刚遇到这个问题。

从SDK工具和构建工具的“预览频道”版本恢复为固定的最新稳定版本。


0

改变com.android.tools.build:gradle:2.2.0-beta1com.android.tools.build:gradle:2.1.2固定对我来说。

我的Android Studio版本是2.1.2,也许这就是为什么


0

最简单的解决方案是您必须将JDK更新到最新版本。因为Cordova仅支持最新的JDK。

1首先,您必须更新您的Android SDK。然后,

2.如果无法通过终端进行更新,请转至Linux destro的软件中心,然后搜索“最新”(要安装的是最新版本)并安装该版本。

然后再次运行Cordova build

它将解决问题。

在我的情况下,它奏效了。


0

您需要进入SDK安装目录,并确保/ build-tools子目录与buildToolsVersion应用程序的build.gradle文件中的匹配: 在此处输入图片说明


0

检查是否有SDK的最新版本安装在任一C:\Program Files\JavaC:\Program Files (x86)\Java

然后转到VS2015,并遵循路径工具-选项-Xamarin-Android设置,然后在JDK位置部分中选择change并查找具有x64或x32的版本。


0

我在科尔多瓦上,这是我做的事情:

-重命名您的android项目,以便有一个新的空间
-将JAVA开发套件更新为1.8(在撰写本文时为最新)
-运行cordova platform add android

现在应该可以正常工作了。您的应用程序哈希值将发生变化,因此如果您将其用于facbeook登录,则需要对其进行更新


0

我遇到这个问题的时间太长了(SO等并没有帮助),而只是解决了它(使用sdk 25)。

-local.properties文件proguard.dir var不适用于ant;我指定了5.3.2,但从sdk目录中使用了4.7命令行调用和已签名的导出版本(eclipse)(仅5+支持Java 8)

我的解决方案是用当前(5+)版本的proguard替换sdk中的proguard jar(android-sdk / tools / proguard / libs目录)。


0

不受支持的主要次要版本错误可能是由于不支持的JDK版本。更新JDK,转到“模块设置”,然后将JDK路径更改为新路径。在大多数情况下,它可以修复错误。


-1

我安装了两个版本的Java JDK。一旦我在File-> Project Structure-> SDK Location中指向Java jdk的正确版本指向我在JAVA_HOME环境变量中拥有的最新版本,问题就消失了。


这不一定解决了Gradle命令行构建的问题。
IgorGanapolsky '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.