build.xml zawiera zadania <scp>
i <sshexec>
, więc udostępniam jsch.jar i inne biblioteki w tym samym katalogu razem z plikiem build.xml.Czy istnieje sposób określenia położenia lokalnego pliku jsch.jar z poziomu pliku build.xml?
Poniższy taskdef:
<taskdef name="scp"
classname="org.apache.tools.ant.taskdefs.optional.ssh.Scp"
classpath="WebContent/WEB-INF/lib/jsch-0.1.43.jar" />
zgłasza błąd
A class needed by class org.apache.tools.ant.taskdefs.optional.ssh.Scp
cannot be found: com/jcraft/jsch/UserInfo
nie mogę modyfikować standardowej instalacji Ant (np umieścić jsch.jar w ant lib katalogu lub usunąć ant-jsch. jar) lub dodaj flagi linii poleceń lub zmodyfikuj zmienne systemowe systemu itp .: skrypt musi działać z domyślnym Ant w różnych systemach.
ja faktycznie przeksięgowanie pytanie pierwotnie zapytał tutaj: http://ant.1045680.n5.nabble.com/specifying-location-of-an-external-library-within-build-xml-td1344969.html
ale nie mógł uzyskać odpowiedź na temat classloader do pracy.
Wydaje się że jest to powszechny problem i myślę, że jest to najlepsze rozwiązanie, z wyjątkiem zamiast braku, idę po prostu iść dalej i usunąć/lib/ant -jsch.jar. W przypadku, gdy pomaga innym, Paulo podaje wyjaśnienie podstawowego problemu w swojej SO [odpowiedź na powiązane pytanie SCP] (http://stackoverflow.com/questions/5796587/problems-with-ant-optional-tasks-sshexec- i-scp-classpath-issue) i [ten sam problem występuje z junitem i jest wyjaśniony tutaj] (http://ant.apache.org/faq.html#delegating-classloader) – gMale
To jednak wymaga modyfikacji standardowej instalacji Ant . –
Przez kilka dni zmagałem się z tym problemem, a to jedyne rozwiązanie, które mogłem dostać do pracy! –