18

我需要通过 scp 复制一个战争文件。

我已添加jsch-0.1.42.jarto$ANT_HOME/lib但我仍然收到此错误:

原因:未找到类 org.apache.tools.ant.taskdefs.optional.ssh.Scp。这看起来像是 Ant 的可选组件之一。

这是运行ant -diagnostics以防万一的结果:

http://gist.github.com/320859

4

3 回答 3

14

从诊断的顶部看,这看起来像您的问题:

可选任务:不可用

您的 $ANT_HOME/lib 目录缺少 ant-jsch.jar,这是您缺少的类的来源。

我不确定这是怎么发生的——我总是从下载站点上的 ZIP 文件安装 Ant ,其中包括所有可选任务。如果您从 Linux 包安装 Ant,请尝试检查是否有用于可选任务的单独包。

一旦你安装了可选任务,我会按照@trashgod 的建议删除旧版本的 jsch.jar。

于 2010-03-03T20:45:03.120 回答
14

我有同样的问题并修复它!请记住,您需要在ant lib 目录中同时需要ant-jsch.jar(来自 ant 或 java 安装的本机)和更新jsch(在我的情况下是)。jsch-0.1.46.jar

您需要jsch.jarhttp://www.jcraft.com/jsch/加载最新的并添加到 libs 文件夹(但不是 replace ant-jsch.jar)。

很多开发者犯的错误:

  1. ant-jsch.jar过时(在这种情况下 <scp> 任务对于 ant 是未知的)
  2. 调整库版本,因此ant-jsch.jar兼容jsch
  3. jschant lib 目录中不存在或已过期
  4. 本机ant-jsch.jar替换为jsch(我做到了...)

在最后两种情况下,ant 知道scp命令,但说它不可用。

于 2012-02-26T17:05:07.837 回答
0

我在 maven pom.xml 中添加了 ant-jsch 和 jsch 依赖项,或者在构建中包含这两个 jar 解决了这个问题。

于 2019-05-03T17:00:28.610 回答