Próbuję zbudować projekt przy użyciu JDK 9, ponieważ używanie argumentu javac za pomocą argumentu --release
oznacza, że może on budować dla starszych wersji bez konieczności instalowania odpowiedniego JDK/JRE. Potrzebuję obsługi Java 6, więc moja istniejąca konfiguracja wymaga środowiska Java 6 dla bootstrapClasspath i dalszego JDK 8 lub 9 dla gradle i IDE. Chciałbym wyeliminować JDK 6 na korzyść używania tylko 9 i trochę uporządkować kompilację.Kierowanie Java 6 z Java 9 JDK daje ostrzeżenia
Mój nowy build.gradle ma następującą konfigurację:
tasks.withType(JavaCompile) {
options.compilerArgs.addAll(['--release', '6', "-Xlint"])
}
sourceCompatibility
, targetCompatibility
i bootstrapClasspath
opcje nie są ustawione, jak rozumiem --release
argumentem obsługuje to teraz.
uzyskać następujące ostrzeżenia:
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.
Znam te mogą być tłumione (mówi, że właśnie tam), ale nie spodziewałem się zobaczyć ich. Podczas budowania z --release [7-9]
te ostrzeżenia nie są obecne.
Dla kontekście, jest to stary (nieużywany teraz) '2x JDK' config:
sourceCompatibility = "1.6"
targetCompatibility = "1.6"
tasks.withType(JavaCompile) {
options.bootstrapClasspath = new SimpleFileCollection(Arrays.asList(new File("$JDK6_HOME/jre/lib/rt.jar")))
}
jestem ustawiania argumenty kompilatora nieprawidłowo? Czy istnieje sposób, aby nie ustawić/wyłączyć source
i target
?
To tylko ostrzega, że kierowanie java6 może przestać działać z nowymi wydaniami JDK8/9+ i nie ma znaczenia, jeśli użyjesz '-source' &&' -target' lub nowego '--release'. – user158037
- to skrót od -source -target -bootclasspath Być może używa tych flag pod maską lub widzi je jako similair. Stąd ostrzeżenia. – trappski
@ user158037 Dlaczego jednak nie ostrzegał również o Java 7? – Sam