Ich versuche ein Projekt mit JDK 9 zu erstellen, da das Argument --release
für javac bedeutet, dass es für ältere Versionen erstellen kann, ohne dass das entsprechende JDK/JRE installiert sein muss. Ich muss Java 6 unterstützen, so dass mein vorheriges Setup Java 6 für den bootstrapClasspath und ein weiteres JDK 8 oder 9 für grittle und die IDE benötigt. Ich würde JDK 6 lieber zugunsten von 9 eliminieren und den Build etwas aufräumen.Targeting Java 6 mit Java 9 JDK gibt Warnungen
Mein neues build.gradle hat die folgende Konfiguration:
tasks.withType(JavaCompile) {
options.compilerArgs.addAll(['--release', '6', "-Xlint"])
}
Die sourceCompatibility
, targetCompatibility
und bootstrapClasspath
Optionen nicht gesetzt sind, wie ich das --release
Argument behandelt dies jetzt verstehen.
Ich erhalte die folgenden Warnungen:
warning: [options] source value 1.6 is obsolete and will be removed in a future release
warning: [options] target value 1.6 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
Ich weiß, dass diese unterdrückt werden kann (es sagt, es ist genau dort), aber ich hatte nicht erwartet, sie zu sehen. Beim Erstellen mit --release [7-9]
sind diese Warnungen nicht vorhanden.
Für Kontext, das ist die alte (nicht verwendet jetzt) config '2x JDK':
sourceCompatibility = "1.6"
targetCompatibility = "1.6"
tasks.withType(JavaCompile) {
options.bootstrapClasspath = new SimpleFileCollection(Arrays.asList(new File("$JDK6_HOME/jre/lib/rt.jar")))
}
Bin ich die Compiler-Argumente falsch Einstellung? Gibt es eine Möglichkeit, source
und target
nicht zu setzen/zu setzen?
Sie erklärte, warnt davor, dass Java6 Targeting mit neuen Versionen von Arbeits könnte aufhören JDK8/9+ und es ist egal, ob du '-source' &&' -target' oder die neue '--release' verwendest. – user158037
--release ist im Grunde abgekürzt für -source -target -bootclasspath Könnte sein, dass es diese Flags unter der Haube verwendet oder sieht sie als similair. Daher die Warnungen. – trappski
@ user158037 warum warnte es nicht auch für Java 7? – Sam