ostrzeżenie: [opcje] ścieżka klasy bootstrap nie jest ustawiona w połączeniu z -source 1.5


138

Otrzymuję ostrzeżenie w czasie kompilacji!

ostrzeżenie: [opcje] ścieżka klasy bootstrap nie jest ustawiona w połączeniu z -source 1.5

Jak mogę to naprawić?




zobacz stackoverflow.com/questions/9164625/… aby znaleźć rozwiązanie w przypadku korzystania z maven
hoijui

4
To spowodowało ból głowy przy używaniu String.join z Javy 8 w kompilacji Mavena ze źródłem i celem ustawionym na 7. Użyłem reguły requireJavaVersion wtyczki maven-egzekutor-plugin, aby wymusić zakres, <version>[1.7.0,1.7.0-79]</version>który przynajmniej psuje kompilację z wyraźnym komunikatem, a nie test z niejasną wiadomością.
kamera douszna

Odpowiedzi:


102

Z posta na blogu :

Aby użyć javac z JDK N do cross-kompilatora do starszej wersji platformy, poprawną praktyką jest:

  • Użyj starszego ustawienia -source.
  • Ustaw ścieżkę bootclasspath do kompilacji z plikiem rt.jar (lub odpowiednikiem) dla starszej platformy.

Jeśli drugi krok nie zostanie podjęty, javac sumiennie użyje starych reguł językowych w połączeniu z nowymi bibliotekami, co może spowodować, że pliki klas nie będą działać na starszej platformie, ponieważ mogą zostać uwzględnione odniesienia do nieistniejących metod.


11
Świetnie, chociaż wydaje się, że łatwiej jest po prostu użyć starszego JDK do kompilacji.
dhardy

42

użycie ścieżki bootclasspath

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

W systemach UNIX zlokalizuj rt.jarza pomocą:

locate -r '/rt.jar$'

Ustaw JAVA_HOMEtak, aby rt.jarznajdował się w $JAVA_HOME/jre/lib/rt.jar, a następnie:

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

Testowane na Ubuntu 14.04 dla Oracle Java 7 i 8.


4

Obecnie używam Netbeans IDE 8.0.2 z JDK 1.8 na Linux Mint 17.1, który ma java -version = 1.7.0_65. Aby móc uruchamiać pliki JAR, musiałem ustawić myProject> Właściwości> Format źródłowy / binarny: JDK 7. Jednak podczas budowania (myProject> Clean and Build) otrzymałem podobne ostrzeżenie: ostrzeżenie: [opcje] ścieżka do klasy bootstrap nie jest ustawiona w połączeniu z -source 1.7.

Rozwiązaniem było dodanie platformy Linux Mint JDK1.7 do listy platform Netbeans.

Można to zrobić, przechodząc do myProject> Właściwości> Biblioteki i klikając przycisk Zarządzaj platformami ... Następnie w oknie Java Platform Manager kliknij Dodaj platformę ... i wybierz: Java Standard Edition, kliknij Dalej i przejdź do / usr / lib / jvm / java-7-openjdk-amd64 (lub gdziekolwiek jest to wersja JDK 1.7 ). Nazwa platformy zostanie ustawiona na JDK1.7. Po prostu kliknij Zakończ i gotowe.

Możesz teraz wybrać platformę Java we właściwościach projektu. Wybierając JDK1.7 i uruchamiając Clean and Build: koniec z ostrzeżeniami. :-)


1
„myProject> Properties> Source / Binary Format: JDK 7” zadziałało dla mnie
parametr Doctor

2

Ostrzeżenie można wyłączyć za pomocą nowej podopcji JDK 7 z rodziny -Xlint, -Xlint: -options. na przykład

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

źródła: https://blogs.oracle.com/darcy/entry/bootclasspath_older_source

i

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

Ostrzeżenia, które można włączyć lub wyłączyć opcją -Xlint

Włącz nazwę ostrzeżenia za pomocą opcji -Xlint: nazwa, gdzie nazwa jest jedną z następujących nazw ostrzeżeń. Podobnie możesz wyłączyć nazwę ostrzeżenia opcją -Xlint: -name: ...

opcje Ostrzegaj o problemach związanych z używaniem opcji wiersza poleceń. Zobacz przykład kompilacji krzyżowej, aby zapoznać się z przykładem tego rodzaju ostrzeżenia.


38
Pamiętaj, że nie jest dobrym pomysłem po prostu zamykanie takich ostrzeżeń
Alexander Malakhov,

9
zgodził się, ale czasami lepiej jest wyłączyć niektóre ostrzeżenia niż wyświetlać ich setki, aby ukryć prawdziwe ostrzeżenia.
Neon

3
Czy ktoś może podać minimalny przykład czegoś, co poszło nie tak, ignorując to ostrzeżenie?
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功


2

Upewnij się, że wersja jdk i wersja źródłowa kompilatora java są takie same. Na przykład, jeśli używasz mavena i masz skonfigurowany projekt przy użyciu JDK 9, to wykonanie fragmentu pom spowoduje przejście przez powyższe ostrzeżenie

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

Poprawienie wersji źródłowej / docelowej do 9 naprawia ostrzeżenie, jak poniżej

            <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
To rozwiązało problem, z którym walczyłem przez około godzinę, po prostu nie mogłem tego zobaczyć.
Rutendo,

-2
  1. Pobierz JDK (z ostrzeżeniem w wersji pisemnej) -> zainstaluj

  2. Kliknij prawym przyciskiem myszy projekt -> Właściwości -> Biblioteki -> platforma Java (dodaj zainstalowany JDK) -> OK

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.