2013-08-23 24 views
5

Tôi đang sử dụng Eclipse. Nếu tôi thay đổi mức độ phù hợp của chính dự án (Android) 1,6-1,7, tôi nhận được một lỗi:Làm cách nào để sử dụng dự án Java yêu cầu mức tuân thủ 1.7 trên đường dẫn xây dựng dự án Android?

Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties.

Nếu tôi thay đổi mức độ tuân thủ của "Thư viện" (Java) dự án từ 1,7 đến 1,6, rất nhiều mã trong đó trở thành không hợp lệ.

Đang xem xét mã của dự án Java và sửa mọi lỗi mà tùy chọn duy nhất của tôi ở đây?

+0

Có thể muốn xem [những câu trả lời SO] (http://stackoverflow.com/questions/8578441/can-the-android-sdk-work-with-jdk-1-7) – codeMagic

+0

Điều duy nhất tôi nhận được từ đó là không có giải pháp cho vấn đề của tôi chưa – NoToast

Trả lời

1

Google vừa phát hành Eclipse ADT 22.6 bổ sung hỗ trợ cho các tính năng ngôn ngữ Java 7, http://developer.android.com/tools/sdk/eclipse-adt.html. Khi bạn nâng cấp lên phiên bản mới nhất của plugin, mức tuân thủ Compiler sẽ bao gồm tùy chọn 1.7.

0

Cố gắng dọn dẹp dự án của bạn và sửa các thuộc tính android. Liên kết herehere

+1

Sửa các thuộc tính android chỉ cần chuyển đổi nó thành 1.6. – NoToast

+0

Làm sạch các thuộc tính của dự án có làm bất cứ điều gì về các lỗi không? – keybee

+0

Rõ ràng, nó sửa lỗi. Tôi có thể đã làm điều đó bằng tay, nhưng nó không giúp tôi với vấn đề không tương thích của tôi. Rõ ràng dự án chính và dự án được tham chiếu cần phải ở cùng mức độ tuân thủ để toàn bộ công việc hoạt động. – NoToast

0

Tôi đoán bạn có thể tìm thấy câu trả lời của bạn ở đây: Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties

Nếu điều đó không giúp, tôi muốn đề nghị để cập nhật các plugin sdk tất cả của Android. Tôi đã có vấn đề tương tự, sau khi cập nhật sdk của android, nhưng tôi đã bỏ lỡ để cập nhật công cụ xây dựng android và gây ra rất nhiều lỗi - có thể giống với bạn.

0

Bạn có thể sử dụng jar được xây dựng với Java7 nhưng chỉ trong trường hợp nếu nó không sử dụng bất kỳ tính năng đặc biệt nào của java7, nếu không dx sẽ không thể chuyển đổi mã byte jvm sang định dạng dalvic.

Nhưng có một vấn đề: quy trình xây dựng mặc định của sdk android (từ nhật thực) không thành công nếu tìm thấy các phiên bản sai (được biên dịch với java7, dx tạo cảnh báo và không thành công). Bạn nên vượt qua một số đối số để dx để thả cảnh báo như vậy. Quá trình xây dựng của Android studio và Idea không quan tâm đến cảnh báo này và dx cố gắng chuyển đổi mã byte java thành dalvic mặc dù phiên bản lớp.

0

Sử dụng IntelliJ IDEA thay vì Eclipse. Trong IDEA, bạn có thể đặt Cấp độ ngôn ngữ sản phẩm (trong Cấu trúc dự ánDự án) riêng biệt với SDK của Android. Miễn là mã của bạn chỉ sử dụng 1,7 tính năng không ảnh hưởng đến bytecode, nó sẽ hoạt động (nhưng trình biên dịch sẽ cung cấp cho bạn cảnh báo). Bằng cách này, bạn có thể sử dụng kim cương, chuyển đổi chuỗi và các đường cú pháp khác, nhưng bạn có thể không may mắn với đa bắt. Trên thực tế, bạn thậm chí có thể sử dụng các tính năng thử nghiệm 1.8 như chú thích ở những nơi xa lạ, nhưng tôi chưa thử nghiệm lambdas (vì IDEA vẫn viết tắt mã). Xem thẻ để biết thêm thông tin.

Vì Android Studio là một phiên bản đặc biệt của IntelliJ IDEA, nên nó có thể có cùng tính năng, nhưng tôi chưa thử.

+0

Tôi sẽ chấp nhận điều này, có vẻ như là một cách hay để làm điều đó. Bất kỳ ý tưởng nào nếu tôi cũng có thể sử dụng các tệp .class được biên dịch trước mà dx không chuyển đổi được với các lỗi "magic class file magic"? Tôi cho rằng không thể sử dụng chúng, nhưng nó đáng để hỏi. – NoToast

+0

Không phải là tôi biết. Workaround của tôi hoạt động với các tệp lớp biên dịch sẵn, nhưng chỉ khi chúng không sử dụng bất kỳ tính năng mới nào trong bytecode (tức là chúng chỉ sử dụng các chuyển đổi trên dây, v.v.) –

+0

Trong Android Studio 2.3.3, tùy chọn Cấp Ngôn ngữ Sản phẩm là không có trong Cấu trúc dự án → Dự án – PaulrBear

0

Nếu thư viện của bạn thực sự cần java 7, bạn không thể làm gì cả.

Nếu không, hãy chuyển đến cài đặt dự án thư viện của bạn, đi tới cài đặt Trình biên dịch Java và chọn 1.6 tương thích tệp .class.

Nếu có lỗi trong tệp nguồn của bạn, điều đó có nghĩa là thư viện của bạn sử dụng hàm java 7 không thể được biên dịch trong bytecode java 6. Bạn đang say.

Nếu không, bây giờ bạn có thể xuất tệp .jar mà bạn có thể sử dụng trong dự án Android của mình.

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