Warnung: [Optionen] Bootstrap-Klassenpfad nicht in Verbindung mit -source 1.5 festgelegt

138

Ich erhalte die Warnmeldung zur Build-Zeit!

Warnung: [Optionen] Bootstrap-Klassenpfad nicht in Verbindung mit -source 1.5 festgelegt

Wie kann ich es reparieren?

Sam
quelle
1
NetBeans-Foren: forums.netbeans.org/topic43819.html
Alex K
Unter stackoverflow.com/questions/9164625/… finden Sie eine Lösung für den Fall, dass Sie maven
hoijui verwenden.
4
Dies verursachte mir Kopfschmerzen bei der Verwendung von String.join aus Java 8 in einem Maven-Build mit Source & Target auf 7. Ich habe die requireJavaVersion- Regel des Maven-Enforcer-Plugins verwendet , um den Bereich zu erzwingen, <version>[1.7.0,1.7.0-79]</version>der den Build zumindest mit einer klaren Meldung anstelle von a unterbricht Test mit dunkler Nachricht.
Earcam

Antworten:

102

Aus einem Blogbeitrag :

Um Javac von JDK N als Cross-Compiler für eine ältere Plattformversion zu verwenden, gehen Sie wie folgt vor:

  • Verwenden Sie die Einstellung für ältere Quellen.
  • Stellen Sie den Bootklassenpfad so ein, dass er mit der Datei rt.jar (oder einer gleichwertigen Version) für die ältere Plattform kompiliert wird.

Wenn der zweite Schritt nicht ausgeführt wird, verwendet javac pflichtbewusst die alten Sprachregeln in Kombination mit neuen Bibliotheken. Dies kann zu Klassendateien führen, die auf der älteren Plattform nicht funktionieren, da Verweise auf nicht vorhandene Methoden enthalten sein können.

Eduard Wirch
quelle
11
Großartig, obwohl es einfacher zu sein scheint, nur ein älteres JDK zum Kompilieren zu verwenden.
Dhardy
42

Bootclasspath-Verwendung

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

Suchen Sie auf UNIX-Systemen Folgendes rt.jar:

locate -r '/rt.jar$'

Stellen Sie JAVA_HOMEso ein, dass rt.jarsich an befindet $JAVA_HOME/jre/lib/rt.jar, dann:

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

Getestet unter Ubuntu 14.04 für Oracle Java 7 und 8.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
quelle
4

Ich verwende derzeit Netbeans IDE 8.0.2 mit JDK 1.8 unter Linux Mint 17.1 mit Java -version = 1.7.0_65. Um JAR-Dateien ausführen zu können, musste ich myProject> Properties> Source / Binary Format: JDK 7 festlegen. Beim Erstellen (myProject> Clean and Build) wurde jedoch eine ähnliche Warnung angezeigt: Warnung: [Optionen] Bootstrap-Klassenpfad nicht festgelegt in Verbindung mit -source 1.7.

Die Lösung bestand darin, die Linux Mint JDK1.7-Plattform zur Netbeans-Plattformliste hinzuzufügen.

Gehen Sie dazu zu myProject> Eigenschaften> Bibliotheken und klicken Sie auf die Schaltfläche Plattformen verwalten ... Klicken Sie dann im Java Platform Manager-Fenster auf Plattform hinzufügen ... und wählen Sie: Java Standard Edition, klicken Sie auf Weiter und navigieren Sie zu / usr / lib / jvm / java-7-openjdk-amd64 (oder dem Speicherort der JDK 1.7-Version) ). Der Plattformname wird auf JDK1.7 festgelegt. Klicken Sie einfach auf Fertig stellen und fertig.

Sie können jetzt die Java-Plattform in den Projekteigenschaften auswählen. Durch Auswahl von JDK1.7 und Ausführen von Clean and Build: Keine Warnungen mehr. :-)

n9dyfi
quelle
1
"myProject> Properties> Source / Binary Format: JDK 7" hat bei mir funktioniert
Doctor Parameter
2

Die Warnung kann mit einer neuen JDK 7-Unteroption innerhalb der -Xlint-Familie, -Xlint: -options, deaktiviert werden. z.B

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

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

und

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

Warnungen, die mit der Option -Xlint aktiviert oder deaktiviert werden können

Aktivieren Sie den Warnnamen mit der Option -Xlint: name, wobei name einer der folgenden Warnnamen ist. Ebenso können Sie den Warnnamen mit der Option -Xlint: -name: ... deaktivieren.

Optionen Warnen Sie vor Problemen im Zusammenhang mit der Verwendung von Befehlszeilenoptionen. Ein Beispiel für diese Art von Warnung finden Sie unter Cross-Compilation-Beispiel.

Neon
quelle
38
Bitte beachten Sie, dass es keine gute Idee ist, Warnungen wie diese einfach zu schließen
Alexander Malakhov
9
stimmte zu, aber manchmal ist es besser, einige Warnungen zu deaktivieren, als Hunderte von ihnen auszugeben, damit Ihre wahren Warnungen verborgen bleiben.
Neon
3
Kann jemand ein minimales Beispiel für etwas geben, das schief geht, indem er diese Warnung ignoriert?
Ciro Santilli 法轮功 冠状 病 六四 事件 18
1
Siehe Kommentar oben
real_paul
2

Stellen Sie sicher, dass Ihre JDK-Version und die Java-Compiler-Quellversion identisch sind. Wenn Sie beispielsweise maven verwenden und das Projekt mit JDK 9 eingerichtet haben, wird das Befolgen des POM-Snippets die obige Warnung durchlaufen

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

Durch Korrigieren der Quell- / Zielversion auf 9 wird die folgende Warnung behoben

            <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>
Sandeep T.
quelle
1
Dies behebt ein Problem, mit dem ich ungefähr eine Stunde lang zu kämpfen hatte. Ich konnte es einfach nicht sehen.
Rutendo
-2
  1. Laden Sie das JDK herunter (bei schriftlicher Warnung) -> installieren

  2. Klicken Sie mit der rechten Maustaste auf Ihr Projekt -> Eigenschaften -> Bibliotheken -> Java-Plattform (fügen Sie Ihr installiertes JDK hinzu) -> OK

Erasyl Abenov
quelle