我需要通过 scp 复制一个战争文件。
我已添加jsch-0.1.42.jar
to$ANT_HOME/lib
但我仍然收到此错误:
原因:未找到类 org.apache.tools.ant.taskdefs.optional.ssh.Scp。这看起来像是 Ant 的可选组件之一。
这是运行ant -diagnostics
以防万一的结果:
从诊断的顶部看,这看起来像您的问题:
可选任务:不可用
您的 $ANT_HOME/lib 目录缺少 ant-jsch.jar,这是您缺少的类的来源。
我不确定这是怎么发生的——我总是从下载站点上的 ZIP 文件安装 Ant ,其中包括所有可选任务。如果您从 Linux 包安装 Ant,请尝试检查是否有用于可选任务的单独包。
一旦你安装了可选任务,我会按照@trashgod 的建议删除旧版本的 jsch.jar。
我有同样的问题并修复它!请记住,您需要在ant lib 目录中同时需要ant-jsch.jar
(来自 ant 或 java 安装的本机)和更新jsch
(在我的情况下是)。jsch-0.1.46.jar
您需要jsch.jar
从http://www.jcraft.com/jsch/加载最新的并添加到 libs 文件夹(但不是 replace ant-jsch.jar
)。
很多开发者犯的错误:
ant-jsch.jar
过时(在这种情况下 <scp> 任务对于 ant 是未知的)ant-jsch.jar
兼容jsch
。jsch
ant lib 目录中不存在或已过期ant-jsch.jar
替换为jsch
(我做到了...)在最后两种情况下,ant 知道scp命令,但说它不可用。
我在 maven pom.xml 中添加了 ant-jsch 和 jsch 依赖项,或者在构建中包含这两个 jar 解决了这个问题。