2015-12-08 8 views
6

में क्रैश करता है मैं जावा/एंड्रॉइड के लिए नया हूं इसलिए मुझे आशा है कि यह हल करने के लिए एक बहुत ही आसान बात है।libGDX सेटअप मुझे जावा 8 का उपयोग करने की अनुमति देता है जो एंड्रॉइड

मैंने प्रोजेक्ट बनाने के लिए libGDX's setup का उपयोग किया है, जिसे मैंने एंड्रॉइड स्टूडियो में आयात किया था। मुझे नहीं पता था कि Supplier इंटरफ़ेस केवल जावा 8 के लिए उपलब्ध था, और इसे कोर मॉड्यूल में उपयोग किया गया, जहां तक ​​मैं समझता हूं, यह एक लाइब्रेरी में संकलित करता है जो सभी एंड्रॉइड/एचटीएमएल/डेस्कटॉप/आईओएस संस्करणों द्वारा साझा किया जाता है खेल। डेस्कटॉप संस्करण ठीक चलाता है (मेरे पास जावा 8 स्थापित है), लेकिन मेरा एंड्रॉइड ऐप NoClassDefFoundError त्रुटि (बीटीडब्ल्यू, त्रुटि संदेश जो मैंने लिखा है, का नाम दिखा रहा था, और Supplier नहीं, लेकिन त्रुटि जैसे ही मैं गायब हो गया, प्रत्येक संदर्भ को Supplier पर हटा दिया गया और जब मैंने उन्हें जोड़ा, तो वापस आया, इसलिए स्पष्ट रूप से त्रुटि संदेश वास्तविक समस्या वर्ग नहीं दिखाता है)।

यदि मैं अपने एंड्रॉइड मॉड्यूल में Supplier का उपयोग करने का प्रयास करता हूं, तो यह मुझे कक्षा आयात करने भी नहीं देगा, इसलिए यह जानता है कि यह जावा संस्करण का समर्थन नहीं करता है, लेकिन यह खुशी से मुझे कोर में इसका उपयोग करने देगा बिना किसी चेतावनी के मॉड्यूल। मुझे यकीन है कि Supplier के संदर्भों को हटाने से समस्या हल हो जाएगी, लेकिन अगर मैं अनजाने में किसी भी जावा 8 फीचर्स का उपयोग करता हूं, तो यह फिक्स रनटाइम त्रुटियों का कारण बन सकता है, इसलिए इसे हल करने का एक अच्छा तरीका नहीं है।

मुझे नहीं पता कि यह प्रोजेक्ट में जावा 8 का उपयोग करने के लिए कहां सेट है, और ऐसा लगता है कि .gradle, .xml और .iml फ़ाइलों का एक गुच्छा दिखाई देता है जो स्पष्ट रूप से कॉन्फ़िगरेशन से संबंधित हैं।

apply plugin: "java" 

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

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


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

एंड्रॉयड स्टूडियो sourceCompatibility = 1.6 लाइन धूसर हो पता चलता है और कहते हैं, "असाइनमेंट नहीं किया जाता है" जब मैं उस पर होवर करें: यहाँ कोर मॉड्यूल में मेरे build.gradle फ़ाइल है। तो यह समस्या का हिस्सा हो सकता है।

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

इसके अलावा, यहां जड़ build.gradle फ़ाइल में core अनुभाग है:

मेरे core.iml फ़ाइल इस लाइन भी शामिल है

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


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

तो, मैं इसे देने से रोकने के लिए क्या बदलना चाहिए मैं अपने मूल परियोजना में जावा 8 का उपयोग करता हूं?

उत्तर

1

मुझे लगता है कि आपको अपने java संस्करण को लक्षित करने के लिए sourceCompatibility के साथ targetCompatibility विशेषता जोड़ने की आवश्यकता है।

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

इसके अलावा संस्करण के साथ gradle.properties फ़ाइल अपनी परियोजना इस्तेमाल होता है में java डिफ़ॉल्ट पथ की जांच की जरूरत है।

सेट java संकलन संस्करण ग्रेडल के बारे में अधिक जानकारी प्राप्त करने के लिए आपको Can’t build Java 1.8 even with proper Java version in use और Gradle finds wrong JAVA_HOME even though it's correctly set की जांच करने की आवश्यकता है।

संबंधित मुद्दे

 संबंधित मुद्दे