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.
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.
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. :-)
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.
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?
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
<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.Antworten:
Aus einem Blogbeitrag :
quelle
Bootclasspath-Verwendung
Suchen Sie auf UNIX-Systemen Folgendes
rt.jar
:Stellen Sie
JAVA_HOME
so ein, dassrt.jar
sich an befindet$JAVA_HOME/jre/lib/rt.jar
, dann:Getestet unter Ubuntu 14.04 für Oracle Java 7 und 8.
quelle
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. :-)
quelle
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.
quelle
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
Durch Korrigieren der Quell- / Zielversion auf 9 wird die folgende Warnung behoben
quelle
Laden Sie das JDK herunter (bei schriftlicher Warnung) -> installieren
Klicken Sie mit der rechten Maustaste auf Ihr Projekt -> Eigenschaften -> Bibliotheken -> Java-Plattform (fügen Sie Ihr installiertes JDK hinzu) -> OK
quelle