peringatan: [opsi] jalur kelas bootstrap tidak disetel bersama -source 1.5


138

Saya mendapatkan pesan peringatan pada waktu Bangun!

peringatan: [opsi] jalur kelas bootstrap tidak disetel bersama -source 1.5

Bagaimana saya bisa memperbaikinya?




lihat stackoverflow.com/questions/9164625/... untuk solusi jika Anda menggunakan maven
hoijui

4
Hal ini menyebabkan saya sakit kepala menggunakan String.join dari Java 8 di build Maven dengan sumber & target yang ditetapkan ke 7. Saya menggunakan aturan Javascript -maven-penegak-plugin ini untuk menegakkan rentang <version>[1.7.0,1.7.0-79]</version>yang setidaknya memecah build dengan pesan yang jelas daripada pesan tes dengan pesan yang tidak jelas.
earcam

Jawaban:


102

Dari posting blog :

Untuk menggunakan javac dari JDK N untuk cross-compiler ke versi platform yang lebih lama, praktik yang benar adalah dengan:

  • Gunakan pengaturan sumber lama.
  • Atur bootclasspath untuk dikompilasi dengan rt.jar (atau yang setara) untuk platform yang lebih lama.

Jika langkah kedua tidak diambil, javac akan dengan patuh menggunakan aturan bahasa lama yang dikombinasikan dengan perpustakaan baru, yang dapat menghasilkan file kelas yang tidak berfungsi pada platform yang lebih lama karena referensi ke metode yang tidak ada dapat dimasukkan.


11
Hebat, meskipun sepertinya lebih mudah hanya menggunakan JDK yang lebih lama untuk dikompilasi.
dhardy

42

penggunaan bootclasspath

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

Pada sistem UNIX, temukan rt.jarmenggunakan:

locate -r '/rt.jar$'

Atur JAVA_HOMEagar rt.jarberada di $JAVA_HOME/jre/lib/rt.jar, lalu:

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

Diuji pada Ubuntu 14,04 untuk Oracle Java 7 dan 8.


4

Saat ini saya menjalankan Netbeans IDE 8.0.2 dengan JDK 1.8 di Linux Mint 17.1 yang memiliki java -version = 1.7.0_65. Jadi untuk dapat menjalankan file JAR saya harus mengatur myProject> Properties> Source / Binary Format: JDK 7. Namun ketika membangun (myProject> Clean and Build) saya mendapat peringatan yang sama: peringatan: [opsi] jalur kelas bootstrap tidak disetel dalam hubungannya dengan -sumber 1.7.

Solusinya adalah menambahkan platform Linux Mint JDK1.7 ke daftar platform Netbeans.

Ini dapat dilakukan dengan masuk ke myProject> Properties> Libraries dan mengklik tombol Manage Platforms .... Kemudian di jendela Java Platform Manager klik Add Platform ... dan pilih: Java Standard Edition, klik Next dan browse ke / usr / lib / jvm / java-7-openjdk-amd64 (atau apa pun lokasi dari versi JDK 1.7 ). Nama Platform akan diatur ke JDK1.7. Cukup klik Selesai dan Anda selesai.

Anda sekarang dapat memilih platform Java di properti proyek. Dengan memilih JDK1.7 dan menjalankan Clean and Build: tidak ada lagi peringatan. :-)


1
"myProject> Properties> Sumber / Format Biner: JDK 7" bekerja untuk saya
Doctor Parameter

2

Peringatan dapat dinonaktifkan dengan suboption JDK 7 baru dalam keluarga -Xlint, -Xlint: -options. misalnya

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

sumber: https://blogs.oracle.com/darcy/entry/bootclasspath_older_source

dan

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

Peringatan Yang Dapat Diaktifkan atau Dinonaktifkan dengan Opsi -Xlint

Aktifkan nama peringatan dengan opsi -Xlint: name, di mana nama adalah salah satu dari nama peringatan berikut. Demikian pula, Anda dapat menonaktifkan nama peringatan dengan opsi -Xlint: -name: ...

opsi Peringatkan tentang masalah yang berkaitan dengan penggunaan opsi baris perintah. Lihat Contoh Kompilasi Lintas untuk contoh peringatan semacam ini.


38
Harap dicatat, itu bukan ide yang baik untuk hanya tutup mulut peringatan seperti ini
Alexander Malakhov

9
setuju, tetapi kadang-kadang lebih baik menonaktifkan beberapa peringatan vs mengeluarkannya ratusan sehingga peringatan Anda yang sebenarnya disembunyikan.
Neon

3
Adakah yang bisa memberi contoh minimal tentang sesuatu yang salah dengan mengabaikan peringatan ini?
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功


2

Pastikan versi jdk Anda dan versi sumber kompiler java adalah sama. Misalnya jika Anda menggunakan maven, dan telah menyiapkan proyek menggunakan JDK 9, maka mengikuti potongan pom akan melalui peringatan di atas

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

Mengoreksi versi sumber / target ke 9 memperbaiki peringatan seperti di bawah ini

            <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
Ini memperbaiki masalah yang saya perjuangkan selama sekitar satu jam, saya hanya tidak bisa melihatnya.
Rutendo

-2
  1. Unduh JDK (pada versi tertulis peringatan) -> instal

  2. Klik kanan proyek Anda -> Properti -> Perpustakaan -> platform Java (tambahkan JDK Anda yang terpasang) -> OK

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.