我的应用程序中不支持的 major.minor 版本 52.0
Posted
技术标签:
【中文标题】我的应用程序中不支持的 major.minor 版本 52.0【英文标题】:Unsupported major.minor version 52.0 in my app 【发布时间】:2016-03-14 15:01:17 【问题描述】:我正在尝试编译我的 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
谁能帮我解决这个问题?
【问题讨论】:
看起来您可能正在使用带有本地 jdk 7 的 java 8 编译库。 我该如何解决这个问题? @泰勒 切换到 jdk 8,或者使用包含com/android/dx/command/Main
的旧版本库
我不允许切换到jdk 8,如何降级包含com/android/dx/command/Main的库版本? @泰勒
无法使用我所在位置的聊天功能。
【参考方案1】:
我在从 android studio 制作新项目时也遇到了这个问题。
我已经能够通过在 app gradle 设置中降级 buildToolsVersion 来解决这个问题: 更改 module-name/build.gradle 行
buildToolsVersion "24.0.0 rc1"
到
buildToolsVersion "23.0.3"
@编辑: 在 Android Studio 2.1 中,转到文件-> 项目结构-> 应用程序-> 构建工具版本。将其更改为 23.0.3
仅当您使用 java 版本 7 并且由于某种原因不想升级到 java 8 时才执行上述方法。
希望对你有帮助
【讨论】:
@RafaelReyes 我对使用 maven 构建 android 项目一无所知。但是由于android无论如何都使用构建工具,所以在maven配置中找不到您的构建工具版本吗? @RudyKurniawan你好,我猜是Gradle 脚本 >> build.gradle(模块应用)
将 buildToolsVersion "24.0.0" 更改为 buildToolsVersion "23.0.3"
来源:经验
【讨论】:
为什么建议降级?它有什么作用? 为什么 23.0.3 更可取?【参考方案3】:最初我已将 buildToolsVersion
从 24.0.0 rc3
降级为 23.0.3
,如 Rudy Kurniawan 的回答中所述。然后我注意到我在项目设置中指定了 jdk 7。我已将其更改为 jdk 8,现在构建工具 24.0.0 rc3
工作。
将编译选项设置为java7
也很重要:
android
...
compileOptions
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
【讨论】:
这解决了我的 AndroidStudio 2 问题。我收到了一堆奇怪的错误。 使用最新的 buildToolsVersion 25.0.1,它需要 Java 8。【参考方案4】:我在 Xamarin Visual Studio 旁边安装了 Android Studio(已安装)。安装后(不包括 SDK,因为它们已经安装)我启动了 Android Studio,它下载、安装并添加了缺少的 SDK(在提供了 SDK 位置的路径之后)。结果我在构建时收到了错误消息
java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : 不支持的major.minor 52.0版
作为解决方案,我在没有 JRE 的情况下安装了 jdk-8u101-windows-i586.exe
(因为它已经安装了)。之前我试过x64版本,但是消失了……那你得换Java Development Kit location。
这在 Visual Studio 中通过单击工具 > 选项 > Xamarin > Android 设置来完成。在这里,您可以导航到正确的位置。就我而言,它是C:\Program Files (x86)\Java\jdk1.8.0_101
。
最后,清理您的项目并进行新的构建 :-)
【讨论】:
"或者将 AndroidSdkBuildToolsVersion MSBuild 属性设置为早期版本。例如,如果您还安装了 23.0.3 版本,则可以在 Android 项目的顶部指定的问题:
线程“主”java.lang.UnsupportedClassVersionError 中的异常: com/android/dx/command/Main : 不支持的 major.minor 版本 52。
是在build.gradle
、buildToolsVersion 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 的 UI 中找不到其他答案中提到的设置。我删除了它,然后创建了一个新项目并且它工作了。【参考方案7】:我在eclipse中新建项目时也遇到过这个问题。
-
打开你的eclipse安装目录
打开文件 eclipse.ini
修改
Dosgi.requiredJavaVersion=1.6
到
Dosgi.requiredJavaVersion=1.7
希望对你有帮助
【讨论】:
我将“Dosgi.requiredJavaVersion=1.7”行附加到 /Applications/eclipse/configuration/config.ini 在我的 macOS Sierra 上完美运行 是什么让您认为 OP 的问题与 Eclipse 相关?【参考方案8】:这里没有人说的是,使用 Build Tools 24.0.0,Java 8 是必需的,而大多数人要么拥有 1.6,要么拥有 1.7。
是的,将构建工具设置为 23.x.x 会“解决”问题,但根本原因是系统上的 Java 版本。
从长远来看,您可能希望升级您的开发环境以使用 JDK8 来利用新的语言增强功能和 jack 编译器。
【讨论】:
【参考方案9】: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 您需要按照特定操作系统的安装说明进行操作。只需谷歌它,你就会得到详细的说明。目标是能够从命令行运行 java -version 并将其视为1.8
。【参考方案10】:
我使用的是 Android Studio 2.0 并面临同样的问题。 Rudy Kurniawan 提供的解决方案解决了这个问题。受影响的文件可以通过以下方式找到:
“项目”->“Android”->“Gradle 脚本”->“build.gradle(Module:app)”
“项目”窗格默认位于左侧。要找到它,请检查侧选项卡的名称,单击它,然后使用顶部下拉框进入“Android”。展开窗格中的树以查找目标文件。双击它进行编辑。
【讨论】:
我正在使用带有 Maven 构建的 Intellij IDEA。【参考方案11】:抱歉回复晚了,希望能帮到别人
此问题与您的 SDK 有关,与您的 JDK 无关。 您可以从
查看您的版本信息帮助 > 关于 > 显示详细信息
你会得到类似的东西
Xamarin.Android 版本:6.0.2.1(入门版)Android SDK: X:\Android\android-sdk
支持的安卓版本:
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 管理器
选择预览频道中的所有项目,包括Android SDK build tools
rev 24rc2
或24rc4
(最新)
点击Delete 'n' packages
如何关闭预览频道
在 SDK 管理器中,选择
工具 > 选项
取消选中Enable preview tools
还有什么
回到你的代码全部清理和重建 (在极少数情况下,您必须从项目设置页面中选择构建工具)
【讨论】:
这对我来说很好。但在此之前我安装了 jdk 8 并按照此处另一个答案中的描述更改了目录, Xamarin 与 OP 的问题有何关系? "或者将 AndroidSdkBuildToolsVersion MSBuild 属性设置为早期版本。例如,如果您还安装了 23.0.3 版本,则可以在 Android 项目的顶部感谢大家的解决方案。
我可以使用以下解决方案来解决我同样的问题。
在我的项目中,我添加了用 Java8 创建的 jar。我的项目是指 JRE 7。当我将项目 JRE 更改为 8 时。我的问题解决了。
步骤:在 Eclipse 中,在项目资源管理器中右键单击项目名称 > 构建路径 > 库 > 单击 jre 版本 > 单击编辑 > 安装 JRE > 添加 > 标准 VM > 选择 JRE 主页单击路径(路径应为 localePath\ java\jdk1.8.0_25\jre) > 提供名称 > 保存 > 为项目选择相同的 JRE > 完成 > 确定刷新/构建项目一次 > 尝试运行您的 java 文件。它应该工作。
【讨论】:
【参考方案13】:在 travis 构建服务器上收到此错误消息?
我修复了我的 travis 构建 buildToolsVersion "24.0.2" 使用这个
# 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 构建时,我发现这个问题对我没有帮助。在我发现如何解决后,我为其他有同样问题的人添加了这个【参考方案14】:在我的情况下,默认 jdk 是 1.7,然后我通过浏览找到更新 jdk 的确切文件夹将其更改为 1.8。
【讨论】:
这对我有用!需要安装和定位 1.8 版 jdk【参考方案15】:我遇到了同样的问题并尝试更改版本,有时是针对Android Studio的版本在Project> Gradle Scripts> build.gradle(Module:app) 你可以更改版本。例如:
android
compileSdkVersion **23**
buildToolsVersion **"23.0.3"**
defaultConfig
applicationId "com.example.android.myapplication"
minSdkVersion **19**
targetSdkVersion **23**
versionCode **1**
versionName **"1.0"**
【讨论】:
【参考方案16】:来自this的问题。
您可以尝试在您使用的 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
如果这没有帮助,请尝试在上述链接中查看其他人的答案,让我们知道什么对您有帮助。
【讨论】:
我正在使用 Maven 和 IntelliJ。 在这种情况下,您可以在 Maven 编译器插件的配置中将源和目标更改为 1.7【参考方案17】:您的 Android 构建工具未正确安装。尝试安装其他版本的构建工具并在 gradle 文件中提供该版本。 或者你可以去这个目录
C:\Users\\AppData\Local\Android\sdk\build-tools
并查看安装了哪些构建工具。尝试更改 gradle 文件中的构建工具版本并编译应用程序以查看它是否工作。
我有 22.0.1、23.0.02 和 24.0.0 版本的构建工具,只有旧的 22.0.1 版本有效。
来源:我自己尝试过,它对我有用。
【讨论】:
【参考方案18】:这个问题源于您的构建工具版本和 JDK 不能一起工作。我使用的是带有构建工具 24.0.1 的 JDK 版本 7。当然,降低构建工具版本可能会解决问题,但这并不是真正的解决方案,因为将来升级构建工具会再次破坏它。
您应该确保构建工具版本和 JDK 一起工作。我将构建工具升级到最新(24.0.1)并安装了 jdk8。确保将您的 JAVA_HOME 设置为最新,然后尝试干净构建。
【讨论】:
【参考方案19】:在尝试使用命令行中的 sdk(cordova build android)为 Cordova 构建时,在 Android Studio 之外遇到了同样的问题。
Rudy 提供的解决方案也适用于这种情况。您只是不要从 Android Studio 降级 Build Tools 的版本,而是使用 android sdk manager ui 进行。
【讨论】:
【参考方案20】:我刚遇到这个问题。
从 SDK 工具和构建工具的“预览频道”版本恢复到最新的稳定版本已修复此问题。
【讨论】:
【参考方案21】:将 com.android.tools.build:gradle:2.2.0-beta1
更改为 com.android.tools.build:gradle:2.1.2
已为我解决了这个问题。
我的 Android Studio 版本是 2.1.2,也许这就是原因
【讨论】:
【参考方案22】:最简单的解决方案是您必须将 JDK 更新到最新版本。因为 Cordova 只支持最新的 JDK 。
1.首先您必须更新您的 Android SDK。那么,
2. 如果您无法通过终端进行更新,请前往 Linux detro 的软件中心 并搜索最新 (您要安装哪一个)并安装那个。
然后再次运行 Cordova build 。
它会解决问题的。
在我的情况下,它起作用了。
【讨论】:
【参考方案23】:您需要进入您的 SDK 安装目录,并确保 /build-tools 子目录与您应用的 build.gradle 文件中的 buildToolsVersion
匹配:
【讨论】:
【参考方案24】:检查您是否在C:\Program Files\Java
或C:\Program Files (x86)\Java
中安装了最新版本的SDK
然后转到 VS2015 并按照路径工具 - 选项 - Xamarin - Android 设置并在 JDK 位置部分中选择更改并查找您拥有 x64 或 x32 的版本。
【讨论】:
【参考方案25】:我在科尔多瓦,这是我所做的:
- 重命名您的 android 项目,以便为新项目留出空间
- 将 JAVA 开发工具包更新到 1.8(撰写本文时的最新版本)
- 运行cordova platform add android
现在应该可以正常工作了。你的应用程序哈希会改变,所以如果你使用它 f.e.登录 facbeook 需要更新
【讨论】:
【参考方案26】:我遇到这个问题太久了(SO 等没有帮助),只是解决了它(使用 sdk 25)。
-local.properties 文件 proguard.dir var 不适用于 ant;我指定了 5.3.2,但命令行调用和签名导出构建(eclipse)使用的是 4.7,来自 sdk 目录(只有 5+ 支持 java 8)
我的解决方案是用当前 (5+) 版本的 proguard 替换 sdk 中的 proguard jars(android-sdk/tools/proguard/libs 目录)。
【讨论】:
【参考方案27】:unsupported-major-minor-version 错误可能是因为 JDK 版本不受支持。更新 JDK,转到模块设置并将 JDK 路径更改为新路径。在大多数情况下,它会修复错误。
【讨论】:
【参考方案28】:我安装了两个版本的 java jdk。一旦我在 File->Project Structure -> SDK Location 中将正确版本的 java jdk 指向我在 JAVA_HOME 环境变量中的最新版本,问题就消失了。
【讨论】:
这不一定能解决使用 Gradle 进行命令行构建的问题。以上是关于我的应用程序中不支持的 major.minor 版本 52.0的主要内容,如果未能解决你的问题,请参考以下文章
UnsupportedClassVersionError 不支持major.minor 51.0版无法加载类[重复]
Jenkins Android 库 - 不支持的 major.minor 版本 51.0
在 Android Studio 中渲染时不支持 major.minor 版本 52.0
如何修复 java.lang.UnsupportedClassVersionError:不支持的 major.minor 版本
如何修复 java.lang.UnsupportedClassVersionError:不支持的 major.minor 版本
如何修复 java.lang.UnsupportedClassVersionError:不支持的 major.minor 版本