【问题标题】:Ant scp task not working, even with jsch on ant/libAnt scp 任务不起作用,即使在 ant/lib 上使用 jsch
【发布时间】:2011-01-23 08:45:43
【问题描述】:

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

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

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

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

http://gist.github.com/320859

【问题讨论】:

  • 类路径中有两次 jsch,选择一个 jsch-0.1.29.jar(153401 字节) jsch-0.1.42.jar(185746 字节)
  • 是的,这对他们中的任何一个都不起作用。

标签: java ant build scp task


【解决方案1】:

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

可选任务:不可用

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

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

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

【讨论】:

  • 如果您使用的是与 MacOSX Lion 10.7+ 捆绑在一起的“ant”,它不附带 ant-jsch.jar。下载官方 ant 的副本并将 ant-jsch.jar 复制到您的 ~/.ant/lib/ 以及 jsch.jar 本身为我解决了这个问题。
【解决方案2】:

我遇到了同样的问题并解决了! 请记住,您需要 BOTH ant-jsch.jar(来自 ant 或 java 安装的本机)并在 ant lib 目录中更新 jsch(在我的情况下是 jsch-0.1.46.jar)。

您需要从http://www.jcraft.com/jsch/ 加载最新的jsch.jar 并添加到libs 文件夹(但不能替换ant-jsch.jar)。

很多开发者都会犯的错误:

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

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

【讨论】:

  • 如果事情仍然无法正常工作,就像我遇到的那样,请注意存在版本不兼容问题。升级 ant,确保 ant-jsch 存在,并将 jsch 升级到最新版本。
  • 在使用 mvn antrun:run 时没有帮助。尝试同时使用 ant-jsch-1.9.2 和 jsch-0.1.54 但它给出了错误。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2011-11-21
    • 1970-01-01
    • 2011-09-15
    • 2023-03-09
    • 2014-10-19
    • 1970-01-01
    • 2012-09-13
    • 2011-02-19
    • 2012-10-16
    相关资源
    最近更新 更多