2015-12-08 20 views
6

Tôi mới sử dụng java/android vì vậy tôi hy vọng đây là một điều khá dễ giải quyết.Thiết lập libGDX cho phép tôi sử dụng Java 8 bị treo trong Android

Tôi đã sử dụng libGDX's setup để tạo dự án, sau đó tôi đã nhập vào Android Studio. Tôi không biết giao diện Supplier chỉ có sẵn cho Java 8 và sử dụng nó trong mô-đun lõi, theo như tôi hiểu, nó biên dịch thành một thư viện được chia sẻ bởi tất cả các phiên bản android/html/desktop/ios của trò chơi. Phiên bản máy tính để bàn chạy tốt (tôi đã cài đặt Java 8), nhưng ứng dụng android của tôi bị lỗi với lỗi NoClassDefFoundError (BTW, thông báo lỗi hiển thị tên của các lớp mà tôi đã viết và không phải là Supplier, nhưng lỗi đã biến mất ngay khi tôi đã xóa mọi tham chiếu đến Supplier và quay lại khi tôi thêm chúng, vì vậy dường như thông báo lỗi không hiển thị lớp sự cố thực tế).

Nếu tôi cố gắng sử dụng Supplier trong mô-đun android, nó thậm chí sẽ không cho phép tôi nhập lớp, vì vậy nó biết nó không hỗ trợ phiên bản Java đó, nhưng nó sẽ vui vẻ cho phép tôi sử dụng nó trong lõi mô-đun mà không có bất kỳ cảnh báo nào. Tôi chắc chắn rằng việc xóa tham chiếu đến Supplier sẽ giải quyết được sự cố, nhưng bản sửa lỗi này có thể gây ra lỗi thời gian chạy sau này nếu tôi vô tình sử dụng bất kỳ tính năng Java 8 nào, do đó không phải là cách hay để giải quyết.

Tôi không biết nơi nào trong dự án được thiết lập để sử dụng Java 8 và dường như có một loạt các tệp .gradle, .xml và .iml dường như đều liên quan đến cấu hình. Dưới đây là build.gradle tập tin của tôi trong các mô-đun lõi:

apply plugin: "java" 

sourceCompatibility = 1.6 
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8' 

sourceSets.main.java.srcDirs = [ "src/" ] 


eclipse.project { 
    name = appName + "-core" 
} 

Android studio cho thấy dòng sourceCompatibility = 1.6 chuyển sang màu xám và nói "Chuyển nhượng không được sử dụng" khi tôi di chuột qua nó. Vì vậy, đó có thể là một phần của vấn đề.

tập tin core.iml My chứa dòng này quá:

<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false"> 

Ngoài ra, đây là core phần trong file gốc build.gradle:

project(":core") { 
    apply plugin: "java" 


    dependencies { 
     compile "com.badlogicgames.gdx:gdx:$gdxVersion" 
    } 
} 

Vì vậy, những gì tôi nên thay đổi để ngăn chặn nó từ để cho tôi sử dụng Java 8 trong dự án cốt lõi của tôi?

Trả lời

1

Tôi nghĩ bạn cần thêm thuộc tính targetCompatibility với sourceCompatibility để chuyển sang phiên bản java.

allprojects { 
    apply plugin: 'java' 
    sourceCompatibility = 1.6 
    targetCompatibility = 1.6 
} 

Cũng cần phải kiểm tra đường java mặc định trong gradle.properties tập tin với phiên bản dự án của bạn là sử dụng.

Bạn cần phải kiểm tra Can’t build Java 1.8 even with proper Java version in useGradle finds wrong JAVA_HOME even though it's correctly set để biết thêm ý tưởng về đặt số java biên dịch phiên bản gradle.

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