2017-12-14 103 views
7

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

मेरा नया build.gradle निम्नलिखित विन्यास है:

tasks.withType(JavaCompile) { 
    options.compilerArgs.addAll(['--release', '6', "-Xlint"]) 
} 

sourceCompatibility, targetCompatibility और bootstrapClasspath विकल्प सेट नहीं कर रहे हैं, के रूप में मैं समझता हूँ --release तर्क अब इस संभालती है।

मैं निम्नलिखित चेतावनी मिलती है:

warning: [options] source value 1.6 is obsolete and will be removed in a future release 
warning: [options] target value 1.6 is obsolete and will be removed in a future release 
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options. 

मैं जानता हूँ कि इन (यह यह सही वहाँ कहते हैं) को दबा दिया जा सकता है, लेकिन मैं उन्हें देखने के लिए उम्मीद नहीं थी। --release [7-9] के साथ इमारत करते समय ये चेतावनियां मौजूद नहीं हैं।

sourceCompatibility = "1.6" 
targetCompatibility = "1.6" 

tasks.withType(JavaCompile) { 
    options.bootstrapClasspath = new SimpleFileCollection(Arrays.asList(new File("$JDK6_HOME/jre/lib/rt.jar"))) 
} 

मैं संकलक तर्क गलत तरीके से स्थापित करने हूँ:

संदर्भ के लिए, इस वर्ष (अप्रयुक्त अब) '2x JDK' config है? क्या source और target सेट/अनसेट करने का कोई तरीका है?

+2

में कहा गया है यह सिर्फ चेतावनी दी है कि लक्षित कर Java6 JDK8 की नई रिलीज के साथ काम करना बंद कर सकता है/9 + और इससे कोई फर्क नहीं पड़ता कि आप 'स्रोत' और 'लक्ष्य' या नया '--release' का उपयोग करते हैं। – user158037

+0

- मूल रूप से -सोर्स-टार्गेट -बूटक्लासपाथ के लिए मूल रूप से लघुरूप है, यह हो सकता है कि यह उन झंडे को हुड के नीचे उपयोग करता है या उन्हें सिमिलियर के रूप में देखता है। इसलिए चेतावनियां। – trappski

+0

@ user158037 यह जावा 7 के लिए चेतावनी क्यों नहीं देगा? – Sam

उत्तर

6

इस हालांकि एक अधिकारी स्रोत से नहीं है, फिर भी चेतावनी के रूप में JEP182#Policy for Retiring javac -source and -target Options

JDK में कहा गया है "एक के अलावा तीन वापस" खंड के साथ गठबंधन किया जा रहा है 9 होगा का अर्थ है "एक प्लस तीन बैक" समर्थन नीति लागू करें जो 1.9/9, 1.8/8, 1.7/7, और 1.6/6 को उस रिलीज़ में पहचाना जाएगा। यही कारण है कि नीति JDK 10.

तो आदर्श 1.6 चेतावनी अच्छा प्रभाव में लेने के ग्राहकों नीति के बारे में पता होने के लिए के साथ तस्वीर में JDK10 साथ हटा दिया जाना चाहिए में जारी रहेगा।

संपादित करें: फिर भी, Alan in comments JDK 10 से बताया के रूप में --release 6 का समर्थन करने के लिए जारी रहेगा के रूप में this mailiing list.

+0

समझ में आता है, 1.5 8 में अप्रचलित है, 1.6 9 में अप्रचलित है .. – Sam

+6

जेडीके 10 '--release 6' का समर्थन जारी रखेगा। यहां इस पर अधिक जानकारी: http://mail.openjdk.java।नेट/पाइपर्मेल/जेडीके-देव/2017-दिसंबर/000321.html –

+0

@AlanBateman इसके साथ उत्तर अपडेट करेगा। उम्मीद है कि एक आधिकारिक पुष्टि के रूप में भी काम करना चाहिए। :) – nullpointer

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