为何在Windows终端创建带模块的JAR文件失败,加空格和点却可行?
问题原因解析
出现这个错误的核心原因是Windows终端(CMD/PowerShell)对路径末尾反斜杠的解析逻辑,以及jar命令对-C参数的语法要求:
jar命令-C参数的语法规则-C参数的作用是临时切换到指定目录,然后将该目录下的指定文件/目录打包进JAR。它要求的格式是:-C <目标目录> <要打包的条目>,也就是-C后面必须跟两个参数:第一个是要切换到的目录路径,第二个是该目录下要包含的文件或目录。Windows终端的反斜杠转义问题
你原命令中mymodapp\末尾的反斜杠\,在Windows终端中会被解析为对后续空格的转义符。这就导致终端把mymodapp\ appmodules\appfuncs当成了单个参数,而不是-C需要的两个独立参数(mymodapp\和appmodules\appfuncs)。
jar命令接收到-C后面只有一个参数,不符合语法要求,因此抛出Error parsing file arguments错误。
- 添加
.后的作用
当你在命令末尾添加.(代表当前目录)后,终端的解析逻辑发生了变化:-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
相关产品推荐
相关产品推荐

