Tôi muốn biên dịch của tôi .java (một số) thành một .jar
tương thích với ít nhất Java 1.6
và mới hơn, tốt hơn là Java 1.5
và các phiên bản Java mới hơn. (Tôi có Java 1.7.0_5
)Làm cách nào để biên dịch tệp .java với hỗ trợ cho các phiên bản Java cũ hơn?
Trả lời
Có, bạn có thể đặt phiên bản trình biên dịch lúc biên dịch. Và biên dịch mã java của bạn thành các phiên bản cũ của java.
Từ bài viết Oracle: http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javac.html
Cross-Compilation Ví dụ
Ở đây chúng ta sử dụng javac để biên dịch mã mà sẽ chạy trên một VM 1.4.
% javac -target 1.4 -bootclasspath jdk1.4.2/lib/classes.zip \
-extdirs "" OldCode.java
Bạn cũng có thể cần tham số sau để đặt biểu thị phiên bản mã của bạn.
-source release
-Chỉ định phiên bản mã nguồn được chấp nhận.
Bạn có thể sử dụng javac -target 1.5 <source files>
.
Nếu bạn đang sử dụng một hệ thống xây dựng, Eclipse hoặc một số IDE khác để xây dựng các lọ, vui lòng chỉ định cái nào.
Và' -source 1.5 ' –
tôi có netbeans, nhưng tôi chỉ có thể sử dụng các tập tin văn bản. Làm thế nào tôi sẽ áp dụng đó vào tất cả .java trong một thư mục? – Primm
Với netbeans nhấp chuột phải vào dự án của bạn, đi đến tài sản và thay đổi "Source/nhị phân định dạng" từ trình đơn thả xuống phía dưới cùng của hộp thoại mở ra – tofarr
Bạn có thể sử dụng phiên bản mới nhất của JDK và đặt cấp nguồn thành 1.5 - miễn là bạn không sử dụng các lớp/phương thức được giới thiệu sau 1.5, bạn nên sử dụng tất cả các phiên bản của JVM 1.5 trở lên :
nguồn 1.5
Tính đến JDK 9, javac hỗ trợ một tùy chọn mới cho cross-biên dịch
javac -release N ...
tương đương với
javac -source N -target N –bootclasspath rtN.jar
Bạn có thể chỉ định phiên bản đích của trình biên dịch thấp hơn so với xây dựng java Phiên bản (tất cả các câu trả lời cơ bản nói rằng) nhưng bạn không nên: nó là khá lộn xộn vì nó chỉ hoạt động nếu bạn cũng cung cấp các thư viện lớp cho phiên bản đích thực tế. Nếu bạn làm điều đó bạn tốt hơn nhiều với chỉ đơn giản bằng cách sử dụng phiên bản Java cũ này để biên dịch. Nhiều công cụ sạch hơn và ít hơn để thiết lập. Đối với Java 9, các tùy chọn là đẹp hơn một chút nhưng bạn vẫn cần một JDK cũ nằm xung quanh cho rt.jar.
Những gì bạn có thể làm là trong chu kỳ ide và dedvelopment của bạn sử dụng thủ thuật -target
/-bootclasspath
để nhận trình biên dịch nhanh hơn và cảnh báo tốt hơn, nhưng các bản phát hành CNTT và bản phát hành sẽ được thực hiện với phiên bản đích.
Hãy xem http://www.veryant.com/support/phpkb/question.php?ID=57 – Mualig
'javac -source 1.5 -target 1.5 OverridingInternalExample.java' đã hoạt động cho tôi –