2009-06-10 27 views
7

Tôi có một dự án sử dụng Generics và một vài Java 1.5/6 bit và miếng. Có thể biên dịch mã này để hoạt động trên một hệ thống chạy 1,4 JRE không?Biên dịch mã Java được viết cho 1.5 để làm việc với 1.4 JRE?

Tôi sử dụng tập lệnh ANT build và tác vụ javac để biên dịch thư viện. Điều này xây dựng tốt trong khi các thuộc tính mục tiêu là 1,5.

Nếu tôi thay đổi mục tiêu là 1,4 tôi nhận được lỗi sau:

generics are not supported in -source 1.4 
(use -source 5 or higher to enable generics) 

Vì vậy, tôi thêm một thuộc tính nguồn và thử một giá trị 5 và 1.5. Lỗi mới:

javac: source release 5 requires target release 1.5 

Tôi sẽ phải trải qua tất cả mã của mình và thay đổi 1.5 công cụ để thực hiện công việc này?

+0

Note 1.4 đã hoàn tất giai đoạn tuổi thọ của nó và 1,5 là hầu hết các cách của mình thông qua. Tuy nhiên, hỗ trợ "Java for Business" có sẵn ở mức giá. –

Trả lời

7

Tôi đã không được sử dụng một trong những giải pháp, nhưng có

  1. Retroweaver
  2. quy định cụ thể không được hỗ trợ -target jsr14thể việc
  3. Retrotranslator
  4. Declawer
  5. JBossRetro

Bạn cũng có thể tìm thấy javac -XD-printflat hữu ích (mặc dù chăm sóc không ghi đè lên nguồn gốc của bạn).

+0

Thứ hai dường như hoạt động. Bây giờ để kiểm tra rằng thư viện thực sự hoạt động trên JRE 1.4 ... –

+1

jsr14 sẽ không cắt nó. Không hỗ trợ enum. Retroweaver mặt khác là rất tốt. –

+0

Cảm ơn, tôi chỉ biết về Retroweaver cho đến bây giờ.Hầu hết các công cụ này đều tuyên bố rõ ràng rằng chúng có thể nhắm mục tiêu 1.4, nhưng theo như tôi thấy chỉ Retroweaver cho phép bạn nhắm mục tiêu 1.2 là tốt, có thể cần thiết cho phát triển J2ME. –

0

Generics được thực hiện theo loại tẩy xóa để chúng hoạt động trước khi generics được giới thiệu. Tuy nhiên bạn sẽ không thể biên dịch mã với phiên bản cũ của trình biên dịch (Tôi không biết lý do tại sao bạn sẽ muốn làm điều đó)

+0

Sử dụng trình biên dịch JDK 1.6. Chỉ có vẻ lạ mà bạn có thể chỉ định phiên bản đích và phiên bản nguồn nhưng nó cho một lỗi nếu chúng không giống nhau. –

+0

Bạn có thể chỉ định phiên bản nguồn cũ hơn phiên bản đích. Vì vậy, nguồn 1,4 của bạn với Enumerations gọi là enum vẫn có thể biên dịch và làm việc trên các dịch vụ trong JDKs chưa sửa đổi. –

6

I have a project that uses generics and a few Java 1.5/6 bits and pieces. Is it possible to compile this code to work on a system running a 1.4 JRE?

số

Am I going to have to go through all my code and change the 1.5 stuff to make this work?

Yes. Nhưng có một cách để tự động hóa điều đó, sử dụng một công cụ có tên là Retroweaver. Không có đảm bảo rằng nó sẽ bắt tất cả mọi thứ mặc dù.

1

Tôi đã có kinh nghiệm tốt với Retrotranslator (retroweaver không hoạt động tốt với những gì tôi cần, không thể nhớ chính xác những gì).

Nó hoạt động rất tốt cho mục đích của tôi (tạo phiên bản đăng nhập JDK1.4).

http://retrotranslator.sourceforge.net/

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