2015-02-22 24 views
5

Tôi có một khung của riêng mình mà tôi sử dụng cho các công việc trong lớp (lớp học, không phải lớp Java) và tôi đã tạo thành tệp .jar để bất cứ khi nào tôi thực hiện thay đổi , tôi có thể kéo và thả nó vào Android Studio. Mọi thứ hoạt động tốt cho 5 nhiệm vụ trong lớp trước đó, và bây giờ đột nhiên tôi gặp lỗi preDexDebug failed khi phân tích cú pháp .jar sau khi nhấp vào chạy. Tôi đã thử nghiệm điều này trên một dự án trống. Dự án có tổng cộng 2 .jar s: Gson và bình của riêng tôi. Nó in ra preDexDebug failed ngay sau khi tôi kéo trong số .jar của riêng mình ... Tôi đã vật lộn với điều này trong hai giờ tức giận, và tôi không biết những gì tôi có thể làm để khắc phục điều này ...PreDexDebug của Android Studio Sau khi thêm tệp jar

I ' đã cố gắng xây dựng lại, làm sạch, kiểm tra gradle.build để sao chép, sao chép dự án nhiều lần, đồng thời cũng biên dịch và sao chép .jar nhiều lần.

Ubuntu x64 với 64 bit Oracle JDK 1.8.0_31. Sử dụng Java kèm với sản lượng JDK

Android Studio:

Configuration on demand is an incubating feature. 
:app:preBuild UP-TO-DATE 
:app:preDebugBuild UP-TO-DATE 
:app:compileDebugNdk UP-TO-DATE 
:app:checkDebugManifest 
:app:preReleaseBuild UP-TO-DATE 
:app:prepareComAndroidSupportAppcompatV72103Library UP-TO-DATE 
:app:prepareComAndroidSupportSupportV42103Library UP-TO-DATE 
:app:prepareDebugDependencies 
:app:compileDebugAidl UP-TO-DATE 
:app:compileDebugRenderscript UP-TO-DATE 
:app:generateDebugBuildConfig UP-TO-DATE 
:app:generateDebugAssets UP-TO-DATE 
:app:mergeDebugAssets UP-TO-DATE 
:app:generateDebugResValues UP-TO-DATE 
:app:generateDebugResources UP-TO-DATE 
:app:mergeDebugResources UP-TO-DATE 
:app:processDebugManifest UP-TO-DATE 
:app:processDebugResources UP-TO-DATE 
:app:generateDebugSources UP-TO-DATE 
:app:compileDebugJava 
:app:preDexDebug 
AGPBI: {"kind":"SIMPLE","text":"UNEXPECTED TOP-LEVEL EXCEPTION:","position":{},"original":"UNEXPECTED TOP-LEVEL EXCEPTION:"} 
AGPBI: {"kind":"SIMPLE","text":"com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)","position":{},"original":"com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processClass(Main.java:704)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processClass(Main.java:704)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.access$300(Main.java:83)","position":{},"original":"\tat com.android.dx.command.dexer.Main.access$300(Main.java:83)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)","position":{},"original":"\tat com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)","position":{},"original":"\tat com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)","position":{},"original":"\tat com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)","position":{},"original":"\tat com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processOne(Main.java:632)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processOne(Main.java:632)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)","position":{},"original":"\tat com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.run(Main.java:246)","position":{},"original":"\tat com.android.dx.command.dexer.Main.run(Main.java:246)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.main(Main.java:215)","position":{},"original":"\tat com.android.dx.command.dexer.Main.main(Main.java:215)"} 
AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.Main.main(Main.java:106)","position":{},"original":"\tat com.android.dx.command.Main.main(Main.java:106)"} 
AGPBI: {"kind":"SIMPLE","text":"...while parsing reactor/communications/ClientEndpointTCP.class","position":{},"original":"...while parsing reactor/communications/ClientEndpointTCP.class"} 
AGPBI: {"kind":"SIMPLE","text":"1 error; aborting","position":{},"original":"1 error; aborting"} 
+0

lỗi của bạn chắc chắn làm cho nó trông giống như bạn có thể thay đổi điều gì đó trong "lò phản ứng/truyền thông/ClientEndpointTCP.class" gây ra vấn đề. Đây có thể là thời điểm tốt để bắt đầu sử dụng hệ thống kiểm soát phiên bản để theo dõi các thay đổi trong mã của bạn, để bạn có thể dễ dàng sao lưu vào một phiên bản đã biết và xác định chính xác trách nhiệm sửa đổi. –

+0

Tôi vừa nhận ra rằng đây là lần đầu tiên tôi biên soạn mọi thứ trên màn hình của mình. Nó luôn luôn làm việc trên máy tính xách tay của tôi, trong đó có OpenJDK 1.7, và có một người khác cũng có lỗi 'ma thuật xấu' ở đây. Tôi nhìn vào nó, và có vẻ như Android SDK chỉ chính thức hỗ trợ Java 7, do đó, lỗi có ý nghĩa bây giờ. Tôi sẽ cố gắng biên dịch trên máy tính xách tay của tôi cho thời điểm – Alex

Trả lời

4

Hóa ra Java 8 là chưa được hỗ trợ bởi Android SDK (Hoặc một cái gì đó dọc theo những đường). Cài đặt Oracle JDK 7 trên máy tính để bàn của tôi và biên dịch lại .jar của tôi đã khắc phục sự cố hoàn toàn.

Phần quan trọng nhất là ở dòng thứ hai của lỗi được tạo: "bad class file magic (cafebabe) or version (0034.0000)". 0x34 là hex cho 52, có nghĩa là những chương trình được nhắm mục tiêu cho JRE có hỗ trợ Java 8, nhưng yêu cầu hệ thống Android Studio nêu rằng JDK 7 là cần thiết

bước để chuyển sang Oracle JDK 7:

  1. Tải về JDK .tar từ trang web của Oracle
  2. nội dung tar để /opt/
  3. sudo update-alternatives --install /bin/java java /opt/jdk*version*/jre/bin/java 1023
  4. sudo update-alternatives --install /bin/javac javac /opt/jdk*version*/bin/javac 1023
  5. sudo update-alternatives --install /bin/jar jar /opt/jdk*version*/bin/jar 1023

https://askubuntu.com/questions/56104/how-can-i-install-sun-oracles-proprietary-java-jdk-6-7-8-or-jre

+0

Bạn có thể cung cấp liên kết về cách chuyển sang Java 7 không? – matto1990

+0

Tôi đã cập nhật câu trả lời của mình – Alex

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