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

为何在Windows终端创建带模块的JAR文件失败,加空格和点却可行?

问题原因解析

出现这个错误的核心原因是Windows终端(CMD/PowerShell)对路径末尾反斜杠的解析逻辑,以及jar命令对-C参数的语法要求:

  1. jar命令-C参数的语法规则
    -C参数的作用是临时切换到指定目录,然后将该目录下的指定文件/目录打包进JAR。它要求的格式是:-C <目标目录> <要打包的条目>,也就是-C后面必须跟两个参数:第一个是要切换到的目录路径,第二个是该目录下要包含的文件或目录。

  2. Windows终端的反斜杠转义问题
    你原命令中mymodapp\末尾的反斜杠\,在Windows终端中会被解析为对后续空格的转义符。这就导致终端把mymodapp\ appmodules\appfuncs当成了单个参数,而不是-C需要的两个独立参数(mymodapp\和appmodules\appfuncs)。

jar命令接收到-C后面只有一个参数,不符合语法要求,因此抛出Error parsing file arguments错误。

  1. 添加.后的作用
    当你在命令末尾添加.(代表当前目录)后,终端的解析逻辑发生了变化:
    -C mymodapp\ appmodules\appfuncs .会被解析为三个部分:mymodapp\作为-C的目录参数,appmodules\appfuncs和.作为要打包的两个条目(虽然.在这里是冗余的,但它强制终端将前面的appmodules\appfuncs识别为独立参数)。此时jar命令能正确识别-C所需的参数对,因此可以正常执行。
更规范的写法

其实不需要添加冗余的.,只需要调整路径写法即可避免这个问题:

  • 去掉目录路径末尾的反斜杠:
    jar --create --file=mymodapp\applib\appfuncs.jar -C mymodapp appmodules\appfuncs
    
  • 或者用引号包裹带反斜杠的路径:
    jar --create --file=mymodapp\applib\appfuncs.jar -C "mymodapp\" appmodules\appfuncs
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:07:08