2016-01-10 14 views
6

Gần đây tôi đã nhập một lọ từ ứng dụng AWS chứa tất cả các đối tượng mà tôi sẽ tham chiếu trên ứng dụng Android của mình. Ngay sau đó là trong dự án Android Studio của tôi và nối qua Gradle, lỗi xuất hiện và không biến mất cho đến khi tôi xóa hết lọ nhập khẩu của tôi và xây dựng lại tất cả mọi thứ.Không thể sửa "ParseException: ma thuật tập tin lớp xấu (cafebabe) hoặc phiên bản (0034.0000)"

Tôi đọc:

Lỗi này có thể hợp pháp. Điều này có thể xảy ra khi ứng dụng Android vượt qua tên phương thức 65k. Ứng dụng của tôi có thể lớn, nhưng tôi sẽ ngạc nhiên nếu tất cả các thư viện mà tôi nhập tổng cộng trên đó .... Tôi sẽ không loại trừ nó ra, nhưng đó là rất nhiều phương pháp. Từ những gì tôi thấy, chín lần trong số mười, đây là một lỗi cấu hình. Các bài viết đầu tiên tôi đọc cho biết để cho phép Proguard để loại bỏ tất cả các phương pháp không sử dụng, nhưng điều đó đã không giúp đỡ.

cấu hình của tôi:

tôi có tất cả mọi thứ trên môi trường Android Studio của tôi thiết lập để chạy Java 7:

  • bytecode dự án phiên bản: 1,7
  • JDK vị trí: C: \ Program Files \ 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' 
} 

Tôi đã dành 5 giờ cuối cùng để thử mọi giải pháp trên SO và không có chút may mắn nào với bất kỳ giải pháp nào trong số đó.

+1

Bản sao có thể có của [cafebabe loại kém hoặc phiên bản 0034] (http://stackoverflow.com/questions/33241359/bad-class-cafebabe-or-version-0034) –

+0

https://stackoverflow.com/questions/ 24662801/bad-class-file-magic-hoặc-phiên bản? Lq = 1 có một vài câu trả lời cung cấp thông tin chi tiết tại sao IDE biên dịch mã của bạn với JDK 8 và cách khắc phục nó. –

+0

@Oleg Bài đăng đầu tiên tôi sẽ xem xét. Tôi không biết người dùng đã xóa và biên dịch lại tệp nào. Bài đăng thứ hai tôi đã hoàn toàn cố gắng và không có may mắn. – Shadoninja

Trả lời

17

Sau hơn 6 giờ thử các giải pháp, một trong những Oleg liên kết tôi trong các ý kiến ​​cuối cùng đã dẫn tôi đến nguyên nhân thực sự của vấn đề.

Lời giải thích ngắn gọn về vấn đề này có thể được tìm thấy HERE, nhưng tôi sẽ cố gắng giải thích như thế nào tất cả mọi thứ nhìn vào hệ thống của tôi:

Lỗi này lần đầu tiên xuất hiện cho tôi khi tôi nhập khẩu một tập tin jar đó là một phần của tôi dự án Java chính, được lưu trữ trong Eclipse.

Cách lỗi này trước tiên được gửi đến người dùng thông qua tab Tin nhắn nơi Gradle đi qua từng tác vụ của nó. Nhiệm vụ mà nó bị treo trên là

:app:transformClassesWithDexForDebug 

Vấn đề là các tin nhắn Gradle cửa sổ chỉ nói nhiệm vụ thất bại và sau đó đưa ra một thông báo lỗi không mô tả nói

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 

Để có được một cái nhìn tốt hơn , bạn cần phải nhìn vào giao diện Gradle Console. Các văn bản trong giao diện thiết bị đầu cuối nói với bạn điều này:

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. 

cuộn lên một chút cho thấy stacktrace băng vào tốt, mặc dù thông điệp ban đầu này gợi ý rằng nên có cờ thêm thêm để gỡ lỗi. Đầu stacktrace nói điều này:

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

Nhưng ngay cả điều đó cũng không giúp được gì nhiều. Những gì nó đang cố gắng nói với bạn (rất kém tôi phải thêm) là lớp mà nó đang xem được biên dịch với một phiên bản Java không được hỗ trợ.Trong trường hợp của tôi, phiên bản (0034) là biểu diễn hex của 52 có nghĩa là Java 8. Android không hỗ trợ Java 8, vì vậy nó chấm dứt việc xây dựng.

Giải pháp là quay trở lại dự án Eclipse của tôi và xuất tệp jar với trình biên dịch được đặt thành phiên bản 1.7 và bây giờ mọi thứ đều đang hoạt động trở lại. Tôi hi vọng cái này giúp được!

+0

câu trả lời tuyệt vời, cảm ơn bạn (upvoted!) – Creos

Các vấn đề liên quan