2008-10-07 52 views
6

Cách tốt nhất để chuyển đổi jar hiện có (không có nguồn) được viết bằng java 1.5 thành java 1.4.x là gì?java 1.5 đến 1.4

Trả lời

1

Bạn có thể dịch ngược lại, sau đó biên dịch lại. Có thể bạn sẽ phải sửa chữa không tương thích bằng tay. Đây là một chủ đề trên java decompilers.

0

Bản năng đường ruột của tôi sẽ là dịch ngược lại bình, sau đó biên dịch lại thành 1.4.

Nếu không có 1,5 cuộc gọi API cụ thể trong mã được giải mã, điều đó sẽ hoạt động tốt. Nếu có, bạn sẽ cần phải tái kỹ sư các phần đó để làm việc trong phiên bản java cũ hơn.

12

Hãy xem Retroweaver. Nó sẽ chuyển đổi các lớp hoặc jar để nó có thể được chạy bằng cách sử dụng 1.4 JRE. Tùy thuộc vào 1.5 tính năng được sử dụng, bạn sẽ không cần thêm bất kỳ thời gian chạy retroweaver nào nữa.

Retroweaver sử dụng tăng cường mã byte. Nghe có vẻ bí ẩn nhưng nó hoạt động.

0

Cũng như dịch ngược, bạn có thể phải cấu trúc lại một số thứ trong mã nguồn - enums, generics (Tôi không nghĩ rằng Generics sẽ nằm trong đoạn mã bị biên dịch). một số phôi), boxing/unboxing, vv vv

0

như Rodeoclown nói,
1) giải nén JAR

2) sử dụng một decompiler như jad (http://www.kpdus.com/jad.html) sử dụng các tùy chọn như những jad -d src - f -ff -s .java -space -t4 *** lớp

3) và từ các tệp nguồn được tạo, biên dịch chúng bằng cách sử dụng ja của JDK 1.4 vac.

4) nếu trình biên dịch 1.4 hoạt động OK, rebundle vào jar mới

5) nếu 1,4 trình biên dịch có vấn đề, bạn cần phải sử dụng
retroweaver (http://retroweaver.sourceforge.net/index.html).
Điều đó có thể làm việc trong một số trường hợp NHƯNG nếu lớp mong đợi các thay đổi trong JVM, thì bạn đang ở trong một điểm khó khăn. Nếu các lớp sử dụng tiện ích luồng mới, bạn có thể sử dụng phiên bản util.concurrent JDK 1.4 từ http://g.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html.

Chúc may mắn!

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