cảnh báo: [tùy chọn] đường dẫn lớp bootstrap không được đặt cùng với -source 1.5


138

Tôi nhận được thông báo cảnh báo tại Build time!

cảnh báo: [tùy chọn] đường dẫn lớp bootstrap không được đặt cùng với -source 1.5

Làm thế nào tôi có thể sửa chữa nó?



1
Diễn đàn NetBeans: forum.netbeans.org/topic43819.html
Alex K

xem stackoverflow.com/questions/9164625/ cho một giải pháp trong trường hợp bạn đang sử dụng maven
hoijui

4
Điều này khiến tôi đau đầu khi sử dụng String.join từ Java 8 trong bản dựng Maven với nguồn & mục tiêu được đặt thành 7. Tôi đã sử dụng quy tắc requestJavaVersion của plugin maven để thực thi phạm vi <version>[1.7.0,1.7.0-79]</version>mà ít nhất phá vỡ bản dựng với thông điệp rõ ràng thay vì kiểm tra với thông điệp tối nghĩa.
Earcam

Câu trả lời:


102

Từ một bài đăng trên blog :

Để sử dụng javac từ JDK N để biên dịch chéo sang phiên bản nền tảng cũ hơn, cách thực hành đúng là:

  • Sử dụng cài đặt nguồn cũ hơn.
  • Đặt boot classpath để biên dịch theo rt.jar (hoặc tương đương) cho nền tảng cũ hơn.

Nếu bước thứ hai không được thực hiện, javac sẽ sử dụng mạnh mẽ các quy tắc ngôn ngữ cũ kết hợp với các thư viện mới, điều này có thể dẫn đến các tệp lớp không hoạt động trên nền tảng cũ hơn vì các tham chiếu đến các phương thức không tồn tại có thể được đưa vào.


11
Tuyệt vời, mặc dù có vẻ dễ dàng hơn khi sử dụng JDK cũ hơn để biên dịch.
dhardy

42

sử dụng bootgrouppath

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

Trên các hệ thống UNIX, định vị rt.jarbằng cách sử dụng:

locate -r '/rt.jar$'

Đặt JAVA_HOMEsao cho rt.jarđược đặt tại $JAVA_HOME/jre/lib/rt.jar, sau đó:

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

Đã thử nghiệm trên Ubuntu 14.04 cho Oracle Java 7 và 8.


4

Tôi hiện đang chạy Netbeans IDE 8.0.2 với JDK 1.8 trên Linux Mint 17.1 có java -version = 1.7.0_65. Vì vậy, để có thể chạy các tệp JAR, tôi phải đặt myProject> Properties> Source / Binary Format: JDK 7. Tuy nhiên khi xây dựng (myProject> Clean and Build) tôi đã nhận được một cảnh báo tương tự: cảnh báo: [tùy chọn] đường dẫn lớp bootstrap không được đặt kết hợp với nguồn-1.7.

Giải pháp là thêm nền tảng Linux Mint JDK1.7 vào danh sách nền tảng Netbeans.

Điều này có thể được thực hiện bằng cách đi tới myProject> Properties> Thư viện và nhấp vào nút Quản lý nền tảng .... Sau đó, trong cửa sổ Trình quản lý nền tảng Java, nhấp vào Thêm nền tảng ... và chọn: Phiên bản tiêu chuẩn Java, nhấp vào Tiếp theo và duyệt đến / usr / lib / jvm / java-7-openjdk-amd64 (hoặc bất cứ điều gì là vị trí của phiên bản JDK 1.7 ). Tên nền tảng sẽ được đặt thành JDK1.7. Chỉ cần nhấp vào Kết thúc và bạn đã hoàn tất.

Bây giờ bạn có thể chọn nền tảng Java trong các thuộc tính dự án. Bằng cách chọn JDK1.7 và chạy Clean and Build: không còn cảnh báo nào nữa. :-)


1
"MyProject> Properties> Source / Binary Format: JDK 7" hoạt động với tôi
Tham số bác sĩ

2

Cảnh báo có thể bị vô hiệu hóa với một phân nhóm JDK 7 mới trong họ -Xlint, -Xlint: -options. ví dụ

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

nguồn: https://bloss.oracle.com/darcy/entry/boot classpath_older_source

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

Các cảnh báo có thể được kích hoạt hoặc vô hiệu hóa với tùy chọn -Xlint

Bật tên cảnh báo với tùy chọn -Xlint: name, trong đó tên là một trong những tên cảnh báo sau. Tương tự, bạn có thể tắt tên cảnh báo bằng tùy chọn -Xlint: -name: ...

tùy chọn Cảnh báo về các vấn đề liên quan đến việc sử dụng các tùy chọn dòng lệnh. Xem ví dụ tổng hợp chéo để biết ví dụ về loại cảnh báo này.


38
Xin lưu ý, đó không phải là một ý tưởng tốt để chỉ tắt các cảnh báo như thế này
Alexander Malakhov

9
đồng ý, nhưng đôi khi tốt hơn là vô hiệu hóa một số cảnh báo so với đầu ra hàng trăm trong số chúng để ẩn các cảnh báo thực sự của bạn.
Neon

3
Ai đó có thể đưa ra một ví dụ tối thiểu về một cái gì đó sai lầm bằng cách bỏ qua cảnh báo này?
Ciro Santilli 郝海东 冠状 病 事件 法轮功


2

Đảm bảo phiên bản jdk của bạn và phiên bản nguồn của trình biên dịch java là như nhau. Ví dụ: nếu bạn đang sử dụng maven và đã thiết lập dự án bằng JDK 9, thì việc theo dõi đoạn trích pom sẽ thông qua cảnh báo ở trên

            <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>

Sửa phiên bản nguồn / đích thành 9 sửa cảnh báo như dưới đây

            <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
Điều này đã khắc phục một vấn đề mà tôi đã phải vật lộn trong khoảng một giờ, tôi không thể nhìn thấy nó.
Rutendo

-2
  1. Tải xuống JDK (trên phiên bản cảnh báo bằng văn bản) -> cài đặt

  2. Nhấp chuột phải vào dự án của bạn -> Thuộc tính -> Thư viện -> Nền tảng Java (thêm JDK đã cài đặt của bạn) -> OK

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.