2016-01-10 5 views
6

私はAndroidアプリケーションで参照しようとしているすべてのオブジェクトを含むAWSアプリケーションからjarを最近インポートしました。それが私のAndroid Studioプロジェクトにあり、Gradle経由で接続されるとすぐにエラーが表示され、インポートされたjarファイルを消去してすべてを再構築するまで、エラーは表示されません。"ParseException:悪質なクラスファイルのマジック(cafebabe)またはバージョン(0034.0000)"を修正できません

私が読んだ内容:

このエラーは正当なものである可能性があります。これは、Androidアプリケーションが65kのメソッド名を上回った場合に発生します。私のアプリケーションは大きくなるかもしれませんが、私がインポートしたすべての図書館がそれを上回っていれば、私は驚くでしょう...私はそれを排除しませんが、それは多くの方法です。私が見たものから、10回中9回、これは設定のバグでした。私が読んだ最初のカップルの記事は、Proguardが未使用のメソッドをすべて削除することができると言ったが、それは役に立たなかった。

マイ設定:

私は、Java 7を実行するように設定私のAndroid Studio環境上のすべてのものがあります。

  • プロジェクトバイトコードのバージョン:1.7
  • JDKの場所:C:\プログラムファイル\のJava \をjdk1.7.0_45

build.gradle

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 20 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "com.example.maveric.helloworld" 
     minSdkVersion 15 
     targetSdkVersion 20 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.google.android.gms:play-services:4.2.42' 
    compile 'com.android.support:appcompat-v7:20.0.0' 
    compile 'org.apache.commons:commons-io:1.3.2' 
    compile 'com.cedarsoftware:json-io:4.3.0' 
} 

私はSOのすべてのソリューションを試してみたが、そのうち1つの幸運はなかった。

+1

[bad class cafebabeまたはバージョン0034]の可能な複製(http://stackoverflow.com/questions/33241359/bad-class-cafebabe-or-version-0034) –

+0

https://stackoverflow.com/questions/ 24662801/bad-class-file-magic-or-version?lq = 1には、IDEがJDK 8でコードをコンパイルする理由とその修正方法の洞察を提供するいくつかの回答があります。 –

+0

@Oleg最初の投稿を見ていきます。ユーザーが削除して再コンパイルしたファイルがわかりません。 2番目の記事は私が完全に試したもので運がなかった。 – Shadoninja

答えて

17

解決策を試して6時間以上過ぎた後、Olegがコメントにリンクしてくれた人が、私を最終的に問題の本当の原因に導いてくれました。

問題の簡単な説明はHEREを見つけることができますが、私はすべてが私のシステム上で見てどのように説明しよう:私は私の一部だったjarファイルをインポートするとき

このエラーは、最初に私のために現れましたメインJavaプロジェクトは、Eclipseでホストされていました。

このエラーが最初にユーザに伝える方法は、Messagesタブを使用して、Gradleが各タスクを実行する方法です。それがクラッシュしたタスクは

:app:transformClassesWithDexForDebug 

問題はGradleのメッセージ・ウィンドウだけでタスクが失敗したと言うであり、その後、より良いビューを取得するために

Error:Execution failed for task ':app:transformClassesWithDexForDebug'. 
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_45\bin\java.exe'' finished with non-zero exit value 1 

言っ非説明的なエラーメッセージを表示しますGradle Consoleのビューを見る必要があります。この最初のメッセージはデバッグのために追加される追加のフラグがなければならないことをヒントにもかかわらず、少しはスタックトレースだけで罰金を経由して来たことを示してスクロールアップ

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':app:transformClassesWithDexForDebug'. 
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_45\bin\java.exe'' finished with non-zero exit value 1 

* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 

:ターミナルビュー内のテキストはあなたにこのことを伝えます。スタックトレースの先頭には次のように書かれています。

UNEXPECTED TOP-LEVEL EXCEPTION: 
com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000) 

でも、あまり役に立ちません。あなたに伝えようとしていること(私が追加しなければならないことは非常に不十分です)は、それが見ているクラスが、サポートされていないJavaバージョンでコンパイルされていることです。私の場合、バージョン(0034)はJava 8を意味する52の16進表現でした。AndroidはJava 8をサポートしていないため、ビルドは終了します。

解決策は私のEclipseプロジェクトに戻ってコンパイラをバージョン1.7に設定してjarファイルをエクスポートし、すべてが起動して再び実行されることでした。私はこれが助けて欲しい!

+0

素晴らしい答え、ありがとう(upvoted!) – Creos

関連する問題