2014-05-13 29 views
8

Tôi đang thử nghiệm Java trên Windows Surface Pro. Surface Pro có Java 7 Update 55, nhưng không đã cài đặt JDK.Nhắm mục tiêu phiên bản khác nhau của JRE

Tôi đã biên soạn một chương trình trên MacBook của mình từ dòng lệnh bằng cách sử dụng javac. MacBook có Java 8 Update 5 và nó bao gồm JDK (rõ ràng là vì tôi đã biên dịch trên MBP).

Khi tôi di chuyển chương trình từ MackBook sang Surface Pro, tôi nhận được lỗi sau. Ở đây, "di chuyển chương trình" có nghĩa là sao chép hai tệp *.class vào máy mới và cố gắng thực thi các mã byte.

java.lang.UnsupportedClassVersionError: HttpsTest : Unsupported major.minor version 52. 

Đang cố gắng để biên dịch với kết quả thông tin mục tiêu trong:

$ javac -target 1.7 HttpsTest.java SSLSocketFactoryEx.java 
javac: target release 1.7 conflicts with default source release 1.8 

javac -help không liệt kê bất kỳ tùy chọn để kiểm soát thông tin phiên bản của chương trình biên dịch (trừ target, mà không xuất hiện để làm việc) .

Làm cách nào để biên dịch các tệp nguồn của tôi cho các phiên bản cấp dưới của JRE? Trong trường hợp này, tôi đang nhắm mục tiêu Java 7 từ một máy Java 8.

Trả lời

2

Nếu bạn đang sử dụng nhật thực, bạn có thể đặt mức tuân thủ trình biên dịch trong thuộc tính dự án-> Trình biên dịch Java. Vì vậy, mã của bạn được biên dịch cho phiên bản Java đã chọn. Xem ở đây:

enter image description here

+0

Nhưng cách thực hiện trong nhắc lệnh? – sunleo

+0

@sunleo Tôi đã trả lời câu hỏi của bạn trong một bài đăng riêng biệt. –

2

Từ dòng lệnh, thay đổi cuộc gọi của bạn để:

javac -source 1.7 -target 1.7 HttpsTest.java SSLSocketFactoryEx.java 

Các tài liệu cho javac (đối với JDK 8) là here.

Tài liệu cho javac (cho JDK 9) là here.

Lưu ý: Trong JDK 9, mục tiêu được thay thế bằng --release.

+0

Cảm ơn câu trả lời của bạn. – sunleo

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