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
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.
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.
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.
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
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!
retrotranslator là một tùy chọn khác tương tự như retroweaver
- 1. Hạ cấp mã Java 1.5 đến 1.4 (điểm thưởng: J2ME, Blackberry !!!)
- 2. Biên dịch mã Java được viết cho 1.5 để làm việc với 1.4 JRE?
- 3. Di chuyển đến jquery 1.4
- 4. Di chuyển từ Subversion 1.4 đến 1.6
- 5. Làm thế nào để chuyển đổi PDF phiên bản 1.5 sang phiên bản 1.4 trong PHP
- 6. Sự khác biệt giữa java 1.5 và java 1.6
- 7. Từ Java 1.4 đến Java 6: bất kỳ công cụ tự động nào để cập nhật mã cũ?
- 8. Mã di cư từ JDK 1.5 đến 1.6
- 9. Cách đa nền tảng để mở tệp bằng Java 1.5
- 10. django 1.5 admin inline extra
- 11. Có API Java 1.5 varargs cho slf4j chưa?
- 12. Có một JDiff từ Java 6 đến Java 7 không?
- 13. FormWizard và FileFields (Django 1.4)
- 14. Java: cách dễ nhất để đóng gói cả mã Java 1.5 và 1.6
- 15. Việc biên dịch cho Java 1.5 trên Java 1.7 vẫn hoạt động?
- 16. Bài tập SICP 1.5
- 17. Di chuyển sang Django 1.4
- 18. Việc tuần tự hóa đối tượng java có tương thích giữa 1.5 và 1.6
- 19. Có sai khi di chuyển kho từ máy chủ 1.5 đến 1.7 máy chủ không?
- 20. Cách lấy đường dẫn đến mẫu hiện tại trong Joomla 1.5?
- 21. Gỡ lỗi với Pydev 1.5
- 22. Xóa SMS trong Android 1.5
- 23. Phiên bản JavaScript sau 1.5 - tại sao?
- 24. Nhận mã nhận dạng duy nhất của một Chủ đề trong Java 1.4
- 25. Có cách nào để có tương đương với cấu trúc trong Java 1.4 không?
- 26. Cách tốt nhất để học Django 1.5 là gì?
- 27. Thư viện hệ thống Eclipse JRE [J2SE-1.5]
- 28. Khóa phiên Django 1.5 không có
- 29. Chuỗi JAVA đến char
- 30. Nhận TênError với Django 1.5 và IPython