2010-10-30 18 views
10

Ai có thể cho tôi biết tùy chọn đích jsr14 của javac sẽ vẫn có sẵn với JDK7/8?Phiên bản đích của trình biên dịch java "jsr14" với JDK7/8

Say,

$ javac -source 1.5 -target jsr14 Hello.java 
+0

Điều nào đúng? "sẽ vẫn" hoặc "vẫn sẽ". Lấy làm tiếc. Tôi không nói tiếng Anh khi tôi thức. :) –

+0

Phiên bản mục tiêu "jsr14" là gì? Ý bạn là mục tiêu 1,4? – EJP

+0

kiểm tra điều này ra EJP. http://www.ibm.com/developerworks/java/library/j-jtp02277.html –

Trả lời

4

Gói nguồn OpenJDK mới nhất (openjdk-7-ea-src-b130-18_feb_2011.zip) vẫn còn chứa các cờ trong nguồn (langtools/src/share/classes/com/sun/tools/javac/jvm/Target.java), nhưng nó chưa bao giờ được hỗ trợ, do đó dựa vào đó là một ý tưởng tồi.

Tại sao bạn cần?

+0

Vì tôi đã từng viết 1,5 mã và biên dịch cho 1,4 mục tiêu cho Java ME STBoxes của mình. –

+4

@Jin: Tôi muốn sử dụng một trong các mục tiêu được hỗ trợ và sử dụng một cái gì đó như [Retroweaver] (http://retroweaver.sourceforge.net/) hoặc [Retrotranslator] (http://retrotranslator.sourceforge.net/) để đăng -quá trình kết quả. –

+0

Nhưng jsr14 hoàn hảo cho việc này ... –

4

Cờ đó đã bị hủy kể từ giai đoạn beta là 1,5. Nó chỉ được đưa vào để cho phép trình biên dịch 1.5 beta bỏ qua các generics kiểm tra/phân tích cú pháp theo mặc định trong khi đặc tả generics không được hoàn thành. Khi 1.5 được phát hành, lá cờ đó trở nên vô nghĩa. Các phiên bản trình biên dịch mới có thể không cung cấp lỗi khi gặp phải nhưng rất có thể sẽ bỏ qua nó.

12

Chúng tôi đang sử dụng rất nhiều -jsr14 trong OSGi vì nó cho phép chúng tôi sử dụng Generics trong API của chúng tôi nhưng vẫn triển khai trên 1.4 môi trường, vẫn còn phổ biến trong nhúng. Thật không may, họ thực hiện JDK 7 không tương thích ngược với Java 6 và 5. Javac 1.7 bỏ qua thông tin chung chung thực sự có trong các tệp JAR. Có may mắn là không có vấn đề gì trong thời gian chạy vì thông tin này cũng bị bỏ qua. Và nó không phải là nếu đây là một số tính năng không có giấy tờ ...

Thật không may, mọi người ở phía trước thường có rất ít sự quan tâm đối với những người không thể cập nhật thông tin mới nhất và tuyệt vời nhất. Đoán Oracle thực sự không quan tâm đến thị trường nhúng nữa.

Hiện tại, chúng tôi sẽ phải gửi hai JAR, một cho JAR, một cho JDK 7. Sucks.

Đây là báo cáo lỗi mà chúng tôi đã gửi: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7078419

+0

Eclipse P2 sử dụng mục tiêu jsr14 vì một lý do tương tự. Thật không may, nó không đúng là không có vấn đề gì khi chạy. OpenJDK thổi lên khi sử dụng sự phản chiếu trên các kiểu được biên dịch với mục tiêu jsr14. Điều này đặc biệt có vấn đề khi sử dụng Spring DM hoặc Blueprint như được thấy ở đây: https://gist.github.com/1251497 – mpilquist

+1

Tôi đã chạy trong vấn đề OSGi này. Có báo cáo lỗi OSGi tôi có thể bỏ phiếu không? Lưu ý: độ phân giải cho báo cáo lỗi JDK là: Không phải là lỗi Nó phải được sửa trên bên OSGi sau đó. – Puce

+0

Tôi đã gửi một vấn đề ở đây: https://issues.apache.org/jira/browse/FELIX-3455 Vui lòng bỏ phiếu cho nó. – Puce

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