मैं -Xlint के साथ कैसे संकलित करता हूं: अनियंत्रित?


84

जब मैं अपना कोड संकलित करता हूं तो मुझे एक संदेश मिल रहा है:

Note: H:\Project2\MyGui2.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

मैं कैसे के साथ recompile करते हैं -Xlint:unchecked?


1
क्या आप कमांड लाइन पर संकलन कर रहे हैं? यदि ऐसा है, तो -Xlint:uncheckedकमांड लाइन को जोड़ रहे हैं जिसे आप निष्पादित कर रहे हैं, जैसे कि संदेश इंगित करता है।
101100

इस बात पर निर्भर करता है कि आप अपना कोड कैसे चलाते हैं .. क्या यह ग्रहण से है? कमांड लाइन?
बोआज

तुमने क्या किया? मैंने इस त्रुटि संदेश को कभी नहीं देखा है ...
एलेक्स एनआर

जवाबों:


54

Javac के लिए कमांड लाइन पर इसे निर्दिष्ट करें:

javac -Xlint: अनियंत्रित

या यदि आप चींटी का उपयोग कर रहे हैं तो अपने javac लक्ष्य को संशोधित करें

  <javac ...>
    <compilerarg value="-Xlint"/>
  </javac> 

यदि आप मावेन का उपयोग कर रहे हैं, तो इसे कॉन्फ़िगर करें maven-compiler-plugin

<compilerArgument>-Xlint:unchecked</compilerArgument>

मैं 3, मॉडल 4.0 maven है - <compilerArgument>के तहत चला जाता है <configuration>के भीतर नहीं `<compilerArguments> ' तत्व। मुझे मूर्ख।
होगा

और AOSP के अंदर संकलन के बारे में क्या? मुझे Android.mk फ़ाइल में क्या जोड़ना चाहिए?
डॉ। जकी

48

के लिए इंटेलीजे 13.1 , करने के लिए जाना File> - Settings-> Project Settings-> Compiler> - Java Compiler,, और पर दाएँ हाथ की ओर के लिए Additional command line parametersप्रवेश "-Xlint:unchecked"


धन्यवाद। लेकिन 13.1 कम्युनिटी एडिशन के लिए यह फाइल - सेटिंग्स - कंपाइलर - जावा कंपाइलर पर है, और यह फील्ड सबसे नीचे है।
रेनीपेट

7
14.0.3 के लिए यह सेटिंग पृष्ठ पर चला गया है: फ़ाइल - सेटिंग्स - बिल्ड, निष्पादन, परिनियोजन - कंपाइलर - जावा कंपाइलर।
सिसौवे

1
AndroidStudio पर नहीं, केवल कंपाइलर विकल्प जावा ही नहीं, किसी भी कंपाइलर के लिए डिलीवर किए जा रहे हैं । Build.gradle का संपादन कार्य करता है।
एलेक्स कोहन

में एंड्रॉयड स्टूडियो संकलक विकल्प के तहत पाया जा सकता है फ़ाइल -> नई परियोजना सेटिंग्स -> नई परियोजनाओं के लिए सेटिंग्स । हालांकि वे मौजूदा परियोजना पर लागू नहीं होते हैं।
JJD

26

ग्रेडल प्रोजेक्ट में, आप इस कंपाइल पैरामीटर को निम्नलिखित तरीके से जोड़ सकते हैं:

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        options.compilerArgs << "-Xlint:unchecked"
    }
}

4
हाल के ग्रेडल संस्करणों में कार्य प्रकार Compileका नाम बदल दिया गया है JavaCompile, इसलिए यह हैtasks.withType(JavaCompile) { ... }
obecker

1
मैं यह allprojects { // ... }
जोड़ूंगा

21

मुझे पता है कि यह अजीब लगता है, लेकिन मुझे पूरा यकीन है कि यह आपकी समस्या है:

MyGui.java में कहीं आप प्रकार निर्दिष्ट किए बिना एक सामान्य संग्रह का उपयोग कर रहे हैं। उदाहरण के लिए यदि आप कहीं ArrayList का उपयोग कर रहे हैं, तो आप यह कर रहे हैं:

List list = new ArrayList();

जब आपको ऐसा करना चाहिए:

List<String> list = new ArrayList<String>();

बहुत बहुत धन्यवाद, इससे मुझे मदद मिली!
Farb

14

ढाल के लिए एक और तरीका है:

compileJava {
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}

यह उदाहरण के लिए परीक्षणों को प्रभावित नहीं करेगा।
त्रैलियन

2
एंड्रॉइड स्टूडियो के लिए, इसे थोड़ा अलग दृष्टिकोण की आवश्यकता होती है:tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" }
एलेक्स कोहेन

3
Android Studio 2.1.3 के लिए इसे build.gradle प्रोजेक्ट में जोड़ें allprojects { repositories { jcenter() } gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } } }
tarn

4

Android Studio build.gradleके लिए allprojectsब्लॉक के भीतर अपनी शीर्ष-स्तरीय फ़ाइल में निम्न जोड़ें

tasks.withType(JavaCompile) {
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" 
}


3

यदि आप NetBeans जैसी IDE के साथ काम करते हैं, तो आप Xlint:unchecked अपनी परियोजना की संपत्ति में संकलक विकल्प निर्दिष्ट कर सकते हैं ।

बस प्रोजेक्ट विंडो पर जाएं, प्रोजेक्ट में राइट क्लिक करें और फिर क्लिक करें Properties

दिखाई देने वाली विंडो में Compilingश्रेणी को खोजें, और लेबल वाले टेक्स्टबॉक्स Additional Compiler Optionsमें Xlint:uncheckedविकल्प सेट करें ।

इस प्रकार, परियोजना को संकलित करने के लिए हर बार सेटिंग सेट रहेगी।


2

ग्रेडर संकलक तर्कों का पालन करने के लिए एक क्लीनर तरीका:

compileJava.options.compilerArgs = ['-Xlint:unchecked','-Xlint:deprecation']

यह छोटा हो सकता है लेकिन यह क्लीनर नहीं है । एक बात के लिए, यह मौजूदा विकल्पों को कहीं और सेट करता है। दूसरे के लिए, यह परीक्षण को प्रभावित नहीं करेगा, जैसा कि टार्न के जवाब के नीचे टिप्पणियों में दिया गया है। ऐसा न करें, इसके बजाय xianlinbox के उत्तर का उपयोग करें।
कोनराड रुडोल्फ

1

-Xlint का उपयोग कर संकलन करने का अन्य तरीका: कमांड लाइन के माध्यम से अनियंत्रित

javac abc.java -Xlint:unchecked

यह अनियंत्रित और असुरक्षित चेतावनी दिखाएगा।


0

FYI इन सेटिंग्स के लिए IntelliJ 15 के लिए बदल गया है, नए और बेहतर दफन के लिए भी सुधार हुआ है!

अब यह है: फ़ाइल> अन्य सेटिंग्स> डिफ़ॉल्ट सेटिंग्स> 'निर्माण, निष्पादन, तैनाती'> कंपाइलर> जावा कंपाइलर

और अतिरिक्त कमांड लाइन मापदंडों में, पहले की तरह, "-Xlint: अनियंत्रित" लिखें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.