build.xml enthält <scp>
und <sshexec>
Aufgaben, so biete ich jsch.jar und andere Bibliotheken im selben Verzeichnis zusammen mit build.xml.Gibt es eine Möglichkeit, den Speicherort eines lokalen jsch.jar aus build.xml anzugeben?
Die folgende taskdef:
<taskdef name="scp"
classname="org.apache.tools.ant.taskdefs.optional.ssh.Scp"
classpath="WebContent/WEB-INF/lib/jsch-0.1.43.jar" />
wirft einen Fehler
A class needed by class org.apache.tools.ant.taskdefs.optional.ssh.Scp
cannot be found: com/jcraft/jsch/UserInfo
ich die Standard-Ant-Installation nicht ändern können (zB setzen jsch.jar in ant lib Verzeichnis oder entfernen Ameisen jsch. jar), oder fügen Sie Befehlszeilenflags hinzu oder ändern Sie Systemumgebungsvariablen etc .: Das Skript muss mit dem Standard Ant auf verschiedenen Systemen ausgeführt werden.
Ich reposting tatsächlich die Frage ursprünglich hier gefragt: http://ant.1045680.n5.nabble.com/specifying-location-of-an-external-library-within-build-xml-td1344969.html
konnte aber die Antwort über Classloader nicht zur Arbeit bekommen.
Es scheint, dies ist ein häufiges Problem und ich denke, das ist die beste Lösung, aber anstatt zu scheitern, ich werde einfach weitermachen und das/lib/ant löschen -jsch.jar. Falls es anderen hilft, erklärt Paulo das Kernproblem in seiner SO [Antwort auf eine verwandte SCP-Frage] (http://stackoverflow.com/questions/5796587/problems-with-ant-optional-tasks-sshexec- and-scp-classpath-issue) und [das gleiche Problem tritt bei junit auf und wird hier erklärt] (http://ant.apache.org/faq.html#delegating-classloader) – gMale
Dies erfordert jedoch eine Änderung der Standard-Ant-Installation . –
Ich habe mich seit Tagen mit diesem Problem herumgeschlagen und diese Lösung ist die einzige, mit der ich arbeiten konnte! –