2

我正在尝试<scp>在我的构建文件中使用 Ant 任务。每次运行目标时都会给我一个错误:

cannot be found: com/jcraft/jsch/UserInfo

我读过一些关于 Ant 1.7 存在这个问题的帖子。一些帖子正在讨论ant-jsch.jar从 ant_home 库中删除文件。不幸的是,我不能这样做,因为 ant_home 在许多其他项目中很常见,我无法从 lib 目录中删除或更新任何 jar 文件。

有没有办法可以纯粹使用 Ant 配置来解决这个问题?

4

1 回答 1

3

ant-jsch.jar包含 Apache Ant 团队开发的 ssh 相关任务,同时jsch.jar包含这些 ssh 任务依赖的 jsch 库。

所以做一点检查:检查是否jsch.jar在你的$ANT_HOME/lib,并检查 jar 是否包含UserInfo.class.

如果出现上述情况,请下载最新版本jsch.jar并放入$ANT_HOME/lib.

我目前正在使用jsch.jar去年下载的 Ant 1.8.4,没有任何问题。


更新:

首先检查此页面:

http://ant.apache.org/manual/install.html#optionalTask​​s

请注意,<scp>Ant 二进制发行版中默认包含其他 ssh 任务(ant-jsch.jar)。您无需编写<taskdef>即可使用<scp>,因为它默认包含在 Ant 的 lib 目录中。我建议您将jsch.jar以下几点放入该目录:

  1. 这些 ssh 任务不支持 classpath def,也就是说,你不能在 ssh 任务中定义一个<classpath>指向jsch.jar然后引用它。
  2. 您也可以放入jsch.jar系统的 CLASSPATH 环境变量中包含的任何目录,但这不是一个好习惯。
  3. 我们通常将一个任务及其依赖项放在同一个目录中。
于 2012-09-10T02:13:49.787 回答