您能否解释一下错误信息和解决方案?
我正在开发android studio,我的任务很简单,只需使用库添加2个数字。上次运行成功时,我没有添加jar文件 。但是在添加jar文件后,项目不再运行。当我按下运行时,它会显示错误消息并停止工作。
错误:任务':app:transformClassesWithDexForDebug'执行失败。 com.android.build.api.transform.TransformException:java.lang.RuntimeException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:进程'命令' C:\ Program Files \ Java \ jdk1.8.0_74 \ bin \ java.exe''完成非零退出值1 信息:建筑失败 信息:总时间:5.158秒 信息:3个错误 信息:0警告 信息:请参阅控制台中的完整输出
Gradle文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.blogspot.virtualn0t3b00k.myapplication"
minSdkVersion 8
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
compile files('libs/flanagan.jar')
}
答案 0 :(得分:1)
因此,在下载代码后,真实错误低于...
问题是Android无法运行Java 8编译代码,如果你阅读了这是the library uses
用于编译flanagan.jar中的类的Java Platform 8的当前版本是jdk1.8.0。
此外,JAR文件包含一些未包含在Android SDK中的AWT和Swing包,因此无论如何代码都无法完全编译。
这可以解释为什么你说
添加jar文件后,项目不再运行
错误
Dex: Error converting bytecode to dex:
Cause: java.lang.RuntimeException: Exception parsing classes
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.RuntimeException: Exception parsing classes
at com.android.dx.command.dexer.Main.processClass(Main.java:752)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:718)
at com.android.dx.command.dexer.Main.access$1200(Main.java:85)
at com.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1645)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
at com.android.dx.command.dexer.Main.processOne(Main.java:672)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:574)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:311)
at com.android.dx.command.dexer.Main.run(Main.java:277)
at com.android.dx.command.dexer.Main.main(Main.java:245)
at com.android.dx.command.Main.main(Main.java:106)
Caused by: com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
at com.android.dx.command.dexer.Main.parseClass(Main.java:764)
at com.android.dx.command.dexer.Main.access$1500(Main.java:85)
at com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1684)
at com.android.dx.command.dexer.Main.processClass(Main.java:749)
... 12 more
1 error; aborting
:app:transformClassesWithDexForDebug FAILED
答案 1 :(得分:0)
在build.gradle配置中启用multidex支持。
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.blogspot.virtualn0t3b00k.myapplication"
multiDexEnabled true
minSdkVersion 8
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
javaMaxHeapSize "4g"
preDexLibraries = false
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
}
如果还失败,则在应用程序类中添加以下代码
protected void attachBaseContext(Context base)
{
super.attachBaseContext(base);
MultiDex.install(this);
}
可能你的问题会解决。
答案 2 :(得分:0)
在buildTypes之后和依赖项之前在build.gradle中添加它,是的,不要忘记删除未使用的jar文件和编译文件(库)。
android {
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/ASL2.0'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
}
}
完成所有工作后清理一次项目。
答案 3 :(得分:-1)
尝试在build.gradle文件中添加它
defaultConfig {
// Enabling multidex support.
multiDexEnabled true
}
请删除
行compile files('libs/flanagan.jar')
来自app的build.gradle文件,因为
compile fileTree(include: ['*.jar'], dir: 'libs')
行包含库文件夹flanagan.jar,它位于libs文件夹中。所以添加
compile files('libs/flanagan.jar') is duplicating and giving the error