“Java.exe”以代码 1 退出(Proguard 问题)
Posted
技术标签:
【中文标题】“Java.exe”以代码 1 退出(Proguard 问题)【英文标题】:"Java.exe" exited with code 1 (Proguard issue) 【发布时间】:2016-11-04 00:12:11 【问题描述】:在 Release 中构建 Xamarin.android 应用时出现以下错误。
"Java.exe" exited with code 1
这是输出...
...
1> java.io.IOException: Can't read [C:\Users\FranciscoJavier\AppData\Local\Android\android-sdk\platforms\android-24\android.jar] (Can't process class [java/nio/charset/CharsetDecoder.class] (Unsupported class version number [52.0] (maximum 51.0, Java 1.7)))
1> at proguard.InputReader.readInput(InputReader.java:230)
1> at proguard.InputReader.readInput(InputReader.java:200)
1> at proguard.InputReader.readInput(InputReader.java:178)
1> at proguard.InputReader.execute(InputReader.java:100)
1> at proguard.ProGuard.readInput(ProGuard.java:196)
1> at proguard.ProGuard.execute(ProGuard.java:78)
1> at proguard.ProGuard.main(ProGuard.java:492)
1> Caused by: java.io.IOException: Can't process class [java/nio/charset/CharsetDecoder.class] (Unsupported class version number [52.0] (maximum 51.0, Java 1.7))
1> at proguard.io.ClassReader.read(ClassReader.java:112)
1> at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
1> at proguard.io.JarReader.read(JarReader.java:65)
1> at proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65)
1> at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53)
1> at proguard.InputReader.readInput(InputReader.java:226)
1> ... 6 more
1> Caused by: java.lang.UnsupportedOperationException: Unsupported class version number [52.0] (maximum 51.0, Java 1.7)
1> at proguard.classfile.util.ClassUtil.checkVersionNumbers(ClassUtil.java:140)
1> at proguard.classfile.io.LibraryClassReader.visitLibraryClass(LibraryClassReader.java:89)
1> at proguard.classfile.LibraryClass.accept(LibraryClass.java:301)
1> at proguard.io.ClassReader.read(ClassReader.java:86)
1> ... 11 more
1> Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
1>C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2118,3): error MSB6006: "java.exe" exited with code 1.
1>Done executing task "Proguard" -- FAILED.
1>Done building target "_CompileToDalvikWithDx" in project "Elfo.VisionShop.Droid.csproj" -- FAILED.
1>
1>Build FAILED.
读取输出消息,ProGuard 似乎有问题,有人知道我该怎么办吗?
【问题讨论】:
问题是您正在为不支持的 Java 8 进行编译:Unsupported class version number [52.0] (maximum 51.0, Java 1.7)
。
好的,但是...我怎样才能改变它以使用 Java 1.7 进行编译?
***.com/q/11364761/3788176
我不明白那个解决方案...
Xamarin Android ProGuard Enable的可能重复
【参考方案1】:
只需从官方网站http://proguard.sourceforge.net/更新proguard (替换 $SDK_DIR/tools/proguard/ 中的文件夹)
【讨论】:
【参考方案2】:你可以在这里看到问题:
Caused by: java.io.IOException: Can't process class [java/nio/charset/CharsetDecoder.class] (Unsupported class version number [52.0] (maximum 51.0, Java 1.7))
解决方案: 将您的 Java 目标更改为 7 (1.7)。
【讨论】:
安装 jdk 1.7 从文件 -> 项目结构更改它 Giannisf,我不明白你的意思...文件 -> 项目来自哪里?视觉工作室?请给我更多的细节。提前非常感谢:-) @Fran_gg7 在 Android Studio 中。如果您使用的是Xamarin
,请参阅论坛forums.xamarin.com/discussion/16210/…的这篇帖子
我刚刚检查过我已经在使用 SDK 1.7...,如您所见:s31.postimg.org/xqvxi9tqz/Untitled.png
还要确保你有最新的proguard。默认的 android sdk 没有最新的 proguard。您需要在 android sdk 文件夹中下载并手动替换【参考方案3】:
**Error : while running app “Java.exe” exited with code**
我通过手动覆盖 java 堆大小解决了这个问题:在 Visual Studio 中:
-
右键单击项目
点击Android 属性
点击Android 选项
选择高级选项卡然后高级android构建设置
将 Java 最大堆大小设置为 1G(或更大,如果需要)
项目现在构建。
【讨论】:
这对我有用。如果您在输出中看到类似-1073740791
的错误代码,这应该是解决方案。 -1073740791
实际上是0xC0000409
,实际上是Stack buffer overflow
,这是……站点的名称。 :-)【参考方案4】:
遇到同样的问题,对我来说,以下工作有效(这是导致此错误的特定情况 - 可能不是唯一的):
将构建日志详细程度设置为详细:在 VS2017 中 -> 工具 -> 选项 -> 项目和解决方案 -> 构建并运行 ->MSBuild 项目构建输出详细程度 -> 详细(最低)
开始构建。 在输出日志中(例如在输出窗口中)搜索
proguard.ParseException:
如果日志包含以下内容:
proguard.ParseException: 文件 'proguard.cfg' 第 1 行中的未知选项 '´╗┐-keep'
然后只需在文本编辑器中打开您的文件并在没有 BOM 的情况下保存它。
例如。在 Notepad++ Encoding -> Encode in UTF8 (确保不要选择 Encode in UTF8-BOM) ...并保存
重建您的项目/解决方案。它应该有效 - 至少它对我有效。
【讨论】:
你不需要说你知道帖子是旧的:你可以回答一个问题(假设它是一个实际的答案,这是)帖子是 2 分钟,还是 2岁。也需要定期更新 我在构建日志中注意到了这个错误,但我不知道为什么会这样。非常感谢编码提示。以上是关于“Java.exe”以代码 1 退出(Proguard 问题)的主要内容,如果未能解决你的问题,请参考以下文章
ProGuard:“java.exe”在添加 ModernHTTPClient 后以代码 1 退出
Xamarin Java.exe 以代码 1 退出(Proguard 问题)
错误 MSB6006:启用 ProGuard 时“java.exe”以代码 1 退出
为啥我的 Xamarin.Android 项目不能在启用 Proguard 的情况下构建:“java.exe”退出代码 1