चेतावनी: [विकल्प] बूटस्ट्रैप क्लास पथ 1.5 -source के साथ संयोजन में निर्धारित नहीं है


138

मुझे बिल्ड समय पर चेतावनी संदेश मिलता है!

चेतावनी: [विकल्प] बूटस्ट्रैप क्लास पथ 1.5 -source के साथ संयोजन में निर्धारित नहीं है

मेरे द्वारा यह कैसे किया जा सकता है?



1
नेटबीन्स फ़ोरम: फ़ोरम। Netbeans.org/topic43819.html
एलेक्स के

मामले में एक समाधान के लिए stackoverflow.com/questions/9164625/… देखें: आप
hoijui

4
इसने मुझे 8 के स्रोत और लक्ष्य के साथ सेट मावेन बिल्ड में जावा 8 से String.join का उपयोग करके सिरदर्द का कारण बना दिया। मैंने रेंज को लागू करने के लिए मावेन -एन्फोर्सर-प्लगइन की आवश्यकताजवावर्सन नियम का उपयोग किया <version>[1.7.0,1.7.0-79]</version>जो कम से कम एक स्पष्ट संदेश के साथ बिल्ड को तोड़ता है बजाय अस्पष्ट संदेश के साथ परीक्षण करें।
इयरकैम

जवाबों:


102

एक ब्लॉग पोस्ट से :

JDK N से पुराने प्लेटफॉर्म वर्जन के क्रॉस-कंपाइलर में javac का उपयोग करने के लिए, सही अभ्यास निम्न है:

  • पुराने-सोर्स सेटिंग का उपयोग करें।
  • पुराने प्लेटफ़ॉर्म के लिए rt.jar (या समतुल्य) के विरुद्ध संकलन करने के लिए बूटक्लासपथ सेट करें।

यदि दूसरा कदम नहीं उठाया जाता है, तो javac नए पुस्तकालयों के साथ संयुक्त रूप से पुरानी भाषा के नियमों का उपयोग करेगा, जिसके परिणामस्वरूप पुराने फ़ाइलों पर काम न करने वाली क्लास फाइलें हो सकती हैं क्योंकि गैर-मौजूद तरीकों के संदर्भ शामिल हो सकते हैं।


11
महान, हालांकि यह एक पुराने JDK का संकलन करने के लिए उपयोग करना आसान लगता है।
१६:१४

42

bootclasspath का उपयोग

javac -bootclasspath /usr/lib/jvm/java-7-oracle/jre/lib/rt.jar \
      -source 1.7 Main.java

UNIX सिस्टम पर, का rt.jarउपयोग कर पता लगाएँ :

locate -r '/rt.jar$'

JAVA_HOMEऐसा सेट करें, जो उस rt.jarसमय स्थित है $JAVA_HOME/jre/lib/rt.jar:

javac -source 1.7 -bootclasspath "$JAVA_HOME/jre/lib/rt.jar" Main.java

ओरेकल जावा 7 और 8 के लिए Ubuntu 14.04 पर परीक्षण किया गया।


4

मैं वर्तमान में लिनक्स टकसाल 17.1 पर JDK 1.8 के साथ Netbeans IDE 8.0.2 चला रहा हूं जिसमें java -version = 1.7.0_65 है। तो JAR फ़ाइलों को चलाने में सक्षम होने के लिए मुझे myProject> गुण> स्रोत / बाइनरी फ़ॉर्मेट: JDK 7 सेट करना था। हालाँकि निर्माण करते समय (myProject> क्लीन एंड बिल्ड) मुझे एक समान चेतावनी मिली: चेतावनी: [विकल्प] बूटस्ट्रैप क्लास पथ सेट किया गया है -स्रोत 1.7 के साथ संयोजन के रूप में।

समाधान नेटबिन प्लेटफ़ॉर्म सूची में लिनक्स टकसाल JDK1.7 प्लेटफ़ॉर्म को जोड़ना था।

यह myProject> Properties> लाइब्रेरी पर जाकर और मैनेज प्लेटफॉर्म ... बटन पर क्लिक करके किया जा सकता है। फिर जावा प्लेटफ़ॉर्म प्रबंधक विंडो में प्लेटफ़ॉर्म जोड़ें ... पर क्लिक करें और चुनें: जावा मानक संस्करण, अगला क्लिक करें और / usr / lib / jvm / java-7-openjdk-amd64 पर ब्राउज़ करें (या जो भी JDD 1.7 संस्करण का स्थान है) )। प्लेटफॉर्म का नाम JDK1.7 पर सेट किया जाएगा। बस समाप्त करें पर क्लिक करें और आपका काम हो गया।

अब आप प्रोजेक्ट गुणों में जावा प्लेटफॉर्म का चयन कर सकते हैं। JDK1.7 का चयन करके और क्लीन एंड बिल्ड चलाएं: कोई और चेतावनी नहीं। :-)


1
"myProject> गुण> स्रोत / बाइनरी प्रारूप: JDK 7" मेरे लिए काम किया
डॉक्टर पैरामीटर

2

इस चेतावनी को एक नए JDK 7 उप-परिवार के भीतर निष्क्रिय किया जा सकता है, -Llint परिवार: -options। जैसे

$ javac -source 1.5 -Xlint: -options example.java

स्रोत: https://blogs.oracle.com/darcy/entry/bootclasspath_older_source

तथा

http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#xlintwarnings

चेतावनियाँ -Xlint विकल्प के साथ सक्षम या अक्षम की जा सकती हैं

विकल्प -Xlint के साथ चेतावनी नाम सक्षम करें: नाम, जहां नाम निम्नलिखित चेतावनी नामों में से एक है। इसी प्रकार, आप विकल्प -Xlint: -name: ... के साथ चेतावनी नाम को अक्षम कर सकते हैं ...

विकल्प कमांड लाइन विकल्पों के उपयोग से संबंधित मुद्दों के बारे में चेतावनी देते हैं। इस तरह की चेतावनी के उदाहरण के लिए क्रॉस-संकलन उदाहरण देखें।


38
कृपया ध्यान दें, इस तरह सिर्फ चेतावनी को बंद करना एक अच्छा विचार नहीं है
अलेक्जेंडर मालाखोव

9
सहमत हुए, लेकिन कभी-कभी कुछ चेतावनियों को निष्क्रिय करना बेहतर होता है ताकि उनमें से सैकड़ों का उत्पादन हो सके ताकि आपकी सच्ची चेतावनी छिपी रहे।
नियॉन

3
क्या कोई ऐसी चीज़ का न्यूनतम उदाहरण दे सकता है जो इस चेतावनी को नज़रअंदाज़ करके गलत हो जाए?
सिरो सेंटिल्ली 郝海东 i iro i 法轮功 '


2

सुनिश्चित करें कि आपका jdk संस्करण और जावा संकलक स्रोत संस्करण समान हैं। उदाहरण के लिए यदि आप मावेन का उपयोग कर रहे हैं, और JDK 9 का उपयोग करके प्रोजेक्ट सेट किया है, तो पोम स्निपेट निम्नलिखित चेतावनी के माध्यम से होगा

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    ...
                </configuration>
            </plugin>

स्रोत / लक्ष्य संस्करण को 9 पर ठीक करने से नीचे दी गई चेतावनी ठीक हो जाती है

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>9</source>
                    <target>9</target>
                    ...
                </configuration>
            </plugin>

1
यह एक समस्या है जिसे मैं लगभग एक घंटे से जूझ रहा था, मैं इसे देख नहीं पाया।
रुतोडो

-2
  1. डाउनलोड JDK (चेतावनी लिखित संस्करण पर) -> स्थापित करें

  2. अपनी परियोजना -> गुण -> पुस्तकालय -> जावा प्लेटफ़ॉर्म पर क्लिक करें (अपना स्थापित JDK जोड़ें) -> ठीक है

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