2014-10-23 12 views
6

Tôi đang cố nâng cấp một hệ thống xây dựng hiện có để sử dụng Java 8 thay vì trình biên dịch Java 5/6, tuy nhiên, tôi vẫn phải tạo ra các đầu ra tương thích với Java 5/6. Nói chung đây là tầm thường (mục tiêu 1.6), nhưng tôi gặp khó khăn khi làm như vậy với mã được tạo ra từ wsimport (sử dụng phiên bản trong JDK 8 bin).Cách buộc dòng lệnh Java 8 wsimport tạo 1,6 mã tương thích mục tiêu

Tôi đang sử dụng máy chủ Java HotSpot 64 bit (xây dựng 25.20-b23), JDK 1.8.0_20.

Lệnh wsimport đang được gọi từ dòng lệnh để tạo mã và đầu ra được đóng gói trực tiếp từ đó. Vì lý do di sản tôi không thể thay đổi quá trình này (như sử dụng kiến), vì vậy tôi cần giải quyết vấn đề từ dòng lệnh.

Những gì tôi chạy là: "wsimport WSDL_FILE" (tệp thực sự không quan trọng) sau đó chạy "javap -verbose CLASS | grep major" trên bất kỳ lớp nào trong đầu ra để kiểm tra phiên bản: nó luôn xuất hiện 52.

tôi đã cố gắng sử dụng -J luận cho wsImport để vượt qua tùy chọn để trình biên dịch javac, tuy nhiên không ai trong số dưới đây đã làm việc:

wsimport "-J-target 1.6" WSDL (fails with unrecognized option -target 1.6" coming from wsimport) 
wsimport "-J-Djavac.target=1.6" WSDL (no effect) 
wsimport "-J-Djavac.opt.target=1.6" WSDL (no effect) 

có lẽ đó là một trong hai số biến thể đi qua các mục tiêu thông qua đó hoạt động hoặc một số cài đặt thuộc tính sẽ hoạt động; nếu đó là cái tôi đang sử dụng, thì tôi đã không tìm ra cách vượt qua nó một cách chính xác.

Trả lời

3

Giả sử rằng wsimport tạo mã nguồn tương thích Java 6, không có lý do gì nên không, nhưng ai biết được thì giải pháp đơn giản là thêm -Xnocompile vào wsimport và sau đó tự xây dựng nguồn, sử dụng bất kỳ cơ chế nào phù hợp cho quá trình của bạn.

+0

Rất tốt! Tôi tin rằng sẽ làm việc, rằng tôi có thể hợp lý kết hợp một lệnh thứ hai nơi xây dựng xảy ra. Tôi sẽ chấp nhận một khi tôi chứng minh rằng các công trình (cho đến lúc đó, nếu có ai biết cách sửa chữa trong wsimport, rất thích biết). – user1676075

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