คำเตือน: [ตัวเลือก] เส้นทางคลาส bootstrap ไม่ได้ตั้งร่วมกับ -source 1.5


138

ฉันได้รับข้อความเตือนเวลา Build!

คำเตือน: [ตัวเลือก] เส้นทางคลาส bootstrap ไม่ได้ตั้งร่วมกับ -source 1.5

ฉันจะแก้ไขได้อย่างไร



1
ฟอรัม NetBeans: forums.netbeans.org/topic43819.html
Alex K

ดูstackoverflow.com/questions/9164625/…สำหรับวิธีแก้ปัญหาในกรณีที่คุณใช้ maven
hoijui

4
สิ่งนี้ทำให้ฉันปวดหัวโดยใช้ String.join จาก Java 8 ใน Maven build พร้อม source & target ตั้งค่าเป็น 7 ฉันใช้กฎ requireJavaVersionของ maven-enforcer-plugin เพื่อบังคับใช้ช่วง<version>[1.7.0,1.7.0-79]</version>ซึ่งอย่างน้อยแบ่งการสร้างด้วยข้อความที่ชัดเจนมากกว่า ทดสอบด้วยข้อความที่คลุมเครือ
earcam

คำตอบ:


102

จากบล็อกโพสต์ :

ในการใช้ javac จาก JDK N เพื่อข้ามคอมไพเลอร์เป็นเวอร์ชันแพลตฟอร์มที่เก่ากว่าวิธีปฏิบัติที่ถูกต้องคือ:

  • ใช้การตั้งค่า -source ที่เก่ากว่า
  • ตั้ง bootclasspath ให้คอมไพล์กับ rt.jar (หรือเทียบเท่า) สำหรับแพลตฟอร์มเก่า

หากขั้นตอนที่สองไม่ได้ดำเนินการ javac จะใช้กฎภาษาเก่าร่วมกับห้องสมุดใหม่ซึ่งอาจส่งผลให้ไฟล์คลาสที่ไม่ทำงานบนแพลตฟอร์มเก่าเนื่องจากการอ้างอิงไปยังวิธีการที่ไม่มีอยู่สามารถรวม


11
เยี่ยมมากดูเหมือนว่าจะง่ายขึ้นเพียงใช้ JDK รุ่นเก่าในการรวบรวม
dhardy

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

ทดสอบกับ Ubuntu 14.04 สำหรับ Oracle Java 7 และ 8


4

ปัจจุบันฉันใช้ Netbeans IDE 8.0.2 กับ JDK 1.8 บน Linux Mint 17.1 ซึ่งมี java -version = 1.7.0_65 ดังนั้นเพื่อให้สามารถเรียกใช้ไฟล์ JAR ฉันต้องตั้งค่า myProject> Properties> Source / Binary Format: JDK 7 อย่างไรก็ตามเมื่อ build (myProject> Clean and Build) ฉันได้รับคำเตือนที่คล้ายกัน: คำเตือน: [ตัวเลือก] เส้นทางคลาส bootstrap ไม่ได้ตั้งค่า ร่วมกับ -source 1.7

ทางออกคือการเพิ่มแพลตฟอร์ม Linux Mint JDK1.7 ลงในรายการแพลตฟอร์ม Netbeans

สิ่งนี้สามารถทำได้โดยไปที่ myProject> Properties> Libraries และคลิกปุ่ม Manage Platforms ... จากนั้นในหน้าต่าง Java Platform Manager คลิกเพิ่มแพลตฟอร์ม ... และเลือก: Java Standard Edition คลิกถัดไปและเรียกดู / usr / lib / jvm / java-7-openjdk-amd64 (หรืออะไรก็ตามที่เป็นที่ตั้งของรุ่น JDK 1.7 ) ชื่อแพลตฟอร์มจะถูกตั้งค่าเป็น JDK1.7 เพียงคลิกเสร็จสิ้นและทำเสร็จแล้ว

ตอนนี้คุณสามารถเลือกแพลตฟอร์ม Java ในคุณสมบัติโครงการ โดยการเลือก JDK1.7 และเรียกใช้ Clean and Build: ไม่มีคำเตือนเพิ่มเติม :-)


1
"myProject> คุณสมบัติ> รูปแบบต้นฉบับ / ไบนารี: JDK 7" ใช้งานได้สำหรับฉัน
พารามิเตอร์แพทย์

2

คำเตือนสามารถปิดการใช้งานด้วยตัวเลือกย่อย JDK 7 ใหม่ภายในตระกูล -Xlint, -Xlint: -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: name โดยที่ name เป็นชื่อคำเตือนอย่างใดอย่างหนึ่ง คุณสามารถปิดใช้งานชื่อคำเตือนด้วยตัวเลือก -Xlint: -name: ...

ตัวเลือกเตือนเกี่ยวกับปัญหาที่เกี่ยวข้องกับการใช้ตัวเลือกบรรทัดคำสั่ง ดูตัวอย่างการรวบรวมข้ามตัวอย่างของคำเตือนประเภทนี้


38
โปรดทราบว่าไม่ใช่ความคิดที่ดีที่จะปิดคำเตือนเช่นนี้
Alexander Malakhov

9
เห็นด้วย แต่บางครั้งมันก็เป็นการดีกว่าถ้าจะปิดการเตือนบางอย่างเทียบกับแสดงผลหลายร้อยคำเพื่อให้การเตือนที่แท้จริงของคุณถูกซ่อนอยู่
นีออน

3
บางคนสามารถยกตัวอย่างบางอย่างที่ผิดพลาดโดยไม่สนใจคำเตือนนี้ได้หรือไม่?
Ciro Santilli 18 冠状病六四事件法轮功


2

ตรวจสอบให้แน่ใจว่าเวอร์ชัน jdk ของคุณและซอร์สโค้ดคอมไพเลอร์ของ Java เหมือนกัน ตัวอย่างเช่นถ้าคุณกำลังใช้ maven และมีการตั้งค่าโครงการโดยใช้ JDK 9 แล้วการติดตาม pom snippet จะผ่านการเตือนข้างต้น

            <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
นี่เป็นปัญหาที่ฉันต้องดิ้นรนเป็นเวลาประมาณหนึ่งชั่วโมงฉันไม่เห็นเลย
Rutendo

-2
  1. ดาวน์โหลด JDK (ตามคำเตือนเป็นลายลักษณ์อักษร) -> ติดตั้ง

  2. คลิกขวาที่โครงการของคุณ -> คุณสมบัติ -> ไลบรารี -> แพลตฟอร์ม Java (เพิ่ม JDK ที่ติดตั้งของคุณ) -> ตกลง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.