ANT - 无法加载依赖类com / jcraft / jsch / Logger

时间:2014-01-20 10:17:50

标签: java ant classloader

我的Ant脚本存在问题。

我需要将文件复制到Linux服务器

<copy file="../Ant/lib/jsch-0.1.50.jar" tofile="${ant.home}/lib/jsch-0.1.50.jar" />

<scp todir="${server.user}:${server.password}@${server.dev}:${server.dev.dir.config}" trust="true" verbose="true">
    <fileset dir="${src.home}/Config/">
        <include name="**/*" />
    </fileset>
</scp>

文件已正确复制,但我收到此错误:

BUILD FAILED
C:\dev.xml:179: Problem: failed to create task or type scp
Cause: Could not load a dependent class com/jcraft/jsch/Logger
       It is not enough to have Ant's optional JARs
       you need the JAR files that the optional tasks depend upon.
       Ant's optional task dependencies are listed in the manual.
Action: Determine what extra JAR files are needed, and place them in one of:
    -C:\Progs\eclipse\plugins\org.apache.ant_1.8.3.v201301120609\lib
    -C:\Users\Administrator\.ant\lib
    -a directory added on the command line with the -lib argument

如何在Ant类加载器中动态添加此JAR?

5 个答案:

答案 0 :(得分:11)

异常本身非常清楚,并指出了问题的原因:

Action: Determine what extra JAR files are needed, and place them in one of:
    -C:\Progs\eclipse\plugins\org.apache.ant_1.8.3.v201301120609\lib
    -C:\Users\Administrator\.ant\lib
    -a directory added on the command line with the -lib argument

请从Library Dependencies

查看

jsch.jar 0.1.50或更高版本:sshexec和scp任务(http://www.jcraft.com/jsch/index.html

如果你在ant lib中复制这个lib,它将解决独立Ant的问题。

对于Eclipse的情况:进入Eclipse首选项,在Ant / Runtime条目中,在“Classpath”选项卡中。使用“Add External Jars”按钮将jsch.jar添加到Ant的类路径中。

答案 1 :(得分:2)

我找到了解决方案here

答案 2 :(得分:1)

如果您使用Eclipse作为IDE并且从Eclipse运行ant不足以复制所需的jar文件jsch-0.1.51.jar(或任何版本)。这也需要更改运行时蚂蚁使用的类路径。

如果您使用Windows - &gt;窗口&gt;偏好&gt;蚂蚁&gt;运行 如果你使用Mac - &gt; Eclipse&gt;偏好&gt;蚂蚁&gt;运行

在&#34; Ant主页条目中的Classpath选项卡中......&#34;你必须添加新罐子。

之后就可以了。

答案 3 :(得分:0)

使用类似的lib标记将JSCH的所有依赖项添加到ANT的<copy目录中。

要查找JSCH的依赖项,请检查其文档。

答案 4 :(得分:0)

将jsch-0.1.51.jar复制到/ usr / share / ant / lib /(或您拥有的任何目录)后,使JAR文件对所有用户都可读,而不仅仅是root用户。不要像我一样花半个小时试图弄清楚它为什么不起作用。