build.xml chứa <scp>
và <sshexec>
tác vụ, vì vậy tôi cung cấp jsch.jar và các thư viện khác trong cùng một thư mục cùng với build.xml.Có cách nào để xác định vị trí của một jsch.jar cục bộ từ bên trong build.xml không?
Các taskdef sau:
<taskdef name="scp"
classname="org.apache.tools.ant.taskdefs.optional.ssh.Scp"
classpath="WebContent/WEB-INF/lib/jsch-0.1.43.jar" />
ném một lỗi
A class needed by class org.apache.tools.ant.taskdefs.optional.ssh.Scp
cannot be found: com/jcraft/jsch/UserInfo
tôi không thể thay đổi cài đặt Ant tiêu chuẩn (ví dụ như đặt jsch.jar trong kiến lib thư mục, hoặc loại bỏ ant-jsch. jar) hoặc thêm cờ dòng lệnh hoặc sửa đổi biến môi trường hệ thống, v.v.: tập lệnh phải chạy với Ant mặc định trên các hệ thống khác nhau.
Tôi thực sự reposting câu hỏi ban đầu hỏi ở đây: http://ant.1045680.n5.nabble.com/specifying-location-of-an-external-library-within-build-xml-td1344969.html
nhưng không thể có được câu trả lời về classloader để làm việc.
Có vẻ như đây là một vấn đề thường gặp và tôi nghĩ rằng đây là giải pháp tốt nhất, ngoại trừ thay vì thất bại, tôi sẽ chỉ đi trước và xóa thư mục/lib/ant -jsch.jar. Trong trường hợp nó giúp người khác, Paulo đưa ra một giải thích về vấn đề cốt lõi trong câu trả lời của mình [câu trả lời cho câu hỏi SCP liên quan] (http://stackoverflow.com/questions/5796587/problems-with-ant-optional-tasks-sshexec- và-scp-classpath-issue) và [cùng một vấn đề xảy ra với junit và được giải thích ở đây] (http://ant.apache.org/faq.html#delegating-classloader) – gMale
Nhưng điều này đòi hỏi phải sửa đổi cài đặt Ant chuẩn . –
Tôi đã vật lộn với vấn đề này trong nhiều ngày và giải pháp này là giải pháp duy nhất tôi có thể làm việc! –