2017-12-14 50 views
7

Tôi đang cố gắng xây dựng một dự án sử dụng JDK 9, khi sử dụng đối số --release với javac có nghĩa là nó có thể xây dựng cho các phiên bản cũ hơn mà không cần cài đặt JDK/JRE tương ứng. Tôi cần hỗ trợ Java 6 vì vậy, thiết lập trước của tôi yêu cầu Java 6 cho bootstrapClasspath và một JDK 8 hoặc 9 nữa cho gradle và IDE. Tôi muốn loại bỏ JDK 6 có lợi cho chỉ bằng cách sử dụng 9, và gọn gàng xây dựng phần nào.Targetting Java 6 với Java 9 JDK đưa ra cảnh báo

build.gradle mới của tôi có cấu hình như sau:

tasks.withType(JavaCompile) { 
    options.compilerArgs.addAll(['--release', '6', "-Xlint"]) 
} 

Các sourceCompatibility, targetCompatibilitybootstrapClasspath tùy chọn không được thiết lập, như tôi hiểu đối số --release xử lý này ngay bây giờ.

tôi nhận được những lời cảnh báo sau đây:

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. 

Tôi biết chúng có thể bị đè nén (nó nói đúng đó), nhưng tôi đã không mong đợi để nhìn thấy chúng. Khi xây dựng với --release [7-9] các cảnh báo này không có mặt.

Đối với bối cảnh, đây là cũ (không sử dụng bây giờ) '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"))) 
} 

Tôi thiết lập các đối số trình biên dịch không chính xác? Có cách nào để không đặt/bỏ đặt số sourcetarget không?

+2

Nó chỉ cảnh báo rằng nhắm mục tiêu Java6 có thể ngừng làm việc với phiên bản mới của JDK8/9+ và không quan trọng nếu bạn sử dụng '-source' &&' -target' hoặc '--release' mới. – user158037

+0

--release về cơ bản là viết tắt của nguồn-mục tiêu -bootclasspath Có thể là nó sử dụng những lá cờ dưới mui xe hoặc xem chúng như là similair. Do đó các cảnh báo. – trappski

+0

@ user158037 tại sao nó cũng không cảnh báo cho Java 7? – Sam

Trả lời

6

Mặc dù đây không phải là từ một nguồn chính thức, nhưng các cảnh báo dường như được liên kết với các "một cộng ba trở lại" khoản như đã nêu trong JEP182#Policy for Retiring javac -source and -target Options

JDK 9 sẽ triển khai chính sách hỗ trợ "một cộng lại ba" nghĩa là rằng 1,9/9, 1,8/8, 1,7/7 và 1,6/6 sẽ được công nhận trong bản phát hành đó. Chính sách đó sẽ tiếp tục trong JDK 10.

Vì vậy, lý tưởng nên được loại bỏ bằng JDK10 trong ảnh với cảnh báo có hiệu quả tốt cho khách hàng để biết chính sách.

Edit: Tuy nhiên, như đã chỉ bởi Alan in comments JDK 10 sẽ tiếp tục hỗ trợ --release 6 như đã nêu trong this mailiing list.

+0

Làm cho tinh thần, 1,5 là lỗi thời trong 8, 1,6 là lỗi thời trong 9 .. – Sam

+6

JDK 10 sẽ tiếp tục hỗ trợ '--release 6'. Thông tin thêm về điều này tại đây: http://mail.openjdk.java.net/pipermail/jdk-dev/2017-December/000321.html –

+0

@AlanBateman Sẽ cập nhật câu trả lời giống nhau. Hy vọng rằng đó cũng sẽ là một xác nhận chính thức. :) – nullpointer

Các vấn đề liên quan