You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ant中使用jar命令更新JAR包?报错找不到文件目录

Ant更新JAR包的Target错误修复

问题描述

需要通过Ant执行jar -uf sample.jar [jar内路径] 目标文件命令更新JAR包,编写的Ant Target如下:

<target name="UpdateJar" depends="Compile">
    <exec executable="java path">
        <arg value="-uf"/>
        <arg value="$Sample.jar"/>
        <arg value="${Path}"/>
        <arg value="Test.class"/>
    </exec>
</target>

运行后报错,错误信息:

(path is : X:\Jar\test ): [exec] X:\Jar\test no such file or directory [exec] Result: 1

错误分析与修复

你的Target存在几个关键问题,修正如下:

  • exec命令指定错误:要执行的是jar工具,不是java path,直接写jar即可(需确保JDK的bin目录在系统环境变量中,否则写完整路径如C:\Program Files\Java\jdk1.8.0_301\bin\jar.exe)。
  • 变量引用格式错误:Ant中变量引用需用${变量名},$Sample.jar要改成${Sample.jar}。
  • 参数传递逻辑错误:jar -uf的正确格式是jar -uf 目标jar包 jar内完整路径/文件名 本地文件路径,需把jar内路径和文件名拼接成一个参数传递。

修正后的Target示例:

<target name="UpdateJar" depends="Compile">
    <exec executable="jar">
        <arg value="-uf"/>
        <arg value="${Sample.jar}"/>
        <!-- 拼接jar内的完整目标路径 -->
        <arg value="${Path}/Test.class"/>
        <!-- 本地Test.class的路径,若不在当前目录需写完整路径 -->
        <arg value="Test.class"/>
    </exec>
</target>

额外注意事项:

  • 确认${Sample.jar}指向的JAR文件真实存在,路径无误。
  • 确保本地Test.class文件存在,若Ant执行的工作目录不是该文件所在目录,需替换为完整路径(比如${basedir}/build/classes/Test.class)。
  • 若${Path}本身包含特殊字符或空格,可给参数加上quoted="true"属性避免解析错误。

内容的提问来源于stack exchange,提问作者panda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 18:12:42