Java 为什么我在从命令行创建JAR文件时会得到这种奇怪的输出?
我在文件夹“D:\Workspace\Workspace\Packaging Programs into JAR Files\src”中编写了一个HelloWorld类。我正在尝试创建一个包含以下HelloWorld.class文件的Jar文件。因此,我在src目录中打开cmd并执行以下命令Java 为什么我在从命令行创建JAR文件时会得到这种奇怪的输出?,java,command-line,jar,command-line-arguments,executable-jar,Java,Command Line,Jar,Command Line Arguments,Executable Jar,我在文件夹“D:\Workspace\Workspace\Packaging Programs into JAR Files\src”中编写了一个HelloWorld类。我正在尝试创建一个包含以下HelloWorld.class文件的Jar文件。因此,我在src目录中打开cmd并执行以下命令 jar cv HelloWorld.jar HelloWorld.class 我明白了: D:\Workspaces\Workspace\Packaging Programs i nto JAR File
jar cv HelloWorld.jar HelloWorld.class
我明白了:
D:\Workspaces\Workspace\Packaging Programs i
nto JAR Files\src>jar cv HelloWorld.jar HelloWorld.class
HelloWorld.jar : no such file or directory
δ╗£H ♦ META-INF/■╩ ♥ ☻ PK♥ δ╗£H ¶ ME
K-*╬╠╧│R0╘3ασr.JM,IM╤u¬♦ ÿδ↓─¢[*h°↨%&τñ*8τ↨§Σ↨%û òk≥r±r☺ P╖îqëC D PK♥
c╖£H ► HelloWorld.classmPMK├@►}█|515╡╡⌡│P☼B¶1ŧ/éx(*D⌠α)iù▓%╔JL¶⌂û
▲¶<°♥ⁿQΓl¶é╨à▌Ö}≤▐╠█²·■°♦päü♥‼₧ì6VÜΦ8Φb╒B╧Bƒ┴<▬Ö(N↑4⌂∩åA?òS╬αìE╞/╩4µ∙u¶'äΦi$2å╛⌂
7₧GÅQÉD┘ï\d│æ↕:í,≤ ?‼è∞¥≤$æ╖2Oªçèφ┬B╙┬Üïul0┤¬≥┴≡I◄v,l║╪┬6⌡¿e♀φz╠e<τôΓ▼¶>?¶<
┌d∟♀6e♥èîó▒*♫÷B ↓ª╙¼@EYé√G▌%⌐BφW4:┌←⌠ÜεT]5Ω¬‼╥¬ª,* P♥ èY!☺ ⌐☺ PK δ╗£H ☻
♦ META-INF/■╩ PK☺☻¶ δ╗£H╖îqëC D ¶ = ME
TA-INF/MANIFEST.MFPK☺☻¶ c╖£H♥ èY!☺ ⌐☺ ► ┬ HelloWorld.classPK♣♠
♥ ♥ ╗ !☻
D:\Workspaces\Workspace\Packaging Programs i
nto JAR Files\src>
D:\Workspace\Workspace\Packaging Programs i
nto JAR Files\src>JAR cv HelloWorld.JAR HelloWorld.class
HelloWorld.jar:没有这样的文件或目录
δ╗英镑♦ META-INF/■╩ ♥ ☻ 主键♥ δ╗H¨ME
K-*╬╠╧│R0╘3ασr.JM,IM╤你♦ ÿδ↓─■[*h°↨%&τñ*8τ↨§Σ↨%òk≥r±r☺ P╖îqëC D PK♥
C╖英镑► HelloWorld.classmPMK├@►}█|515╡╡⌡│P☼B¨1ŧ/x(*D)⌠α) iù▓%╔JL∗⌂û
▲¨您缺少-f
参数,该参数告诉JAR工具输出到文件而不是控制台:
jar cvf HelloWorld.jar HelloWorld.class
更新:
通过告诉JAR将输出发送到标准输出,然后重定向到所需的实际JAR文件,您可以在不使用-f
标志的情况下获得与上述相同的结果。因此,以下操作将实现与上述相同的效果:
jar cv HelloWorld.class > HelloWorld.jar
需要注意的是,将输出从JAR传输到输出文件是操作系统的一项功能,而不是Java的一项功能。您缺少了-f
参数,该参数告诉JAR工具输出到文件而不是控制台:
jar cvf HelloWorld.jar HelloWorld.class
更新:
通过告诉JAR将输出发送到标准输出,然后重定向到所需的实际JAR文件,您可以在不使用-f
标志的情况下获得与上述相同的结果。因此,以下操作将实现与上述相同的效果:
jar cv HelloWorld.class > HelloWorld.jar
需要注意的是,将JAR的输出管道化到输出文件中是操作系统的一项功能,而不是Java的一项功能。它应该是JAR cf
,而不是JAR cv
。为什么要将JAR存档输出到system out?f使其写入的文件就是JAR。通过键入JAR cv
而不是JAR cfe> ,您告诉它通过命令提示符输出jar的内容,而不是将其写入文件。因为它不是以明文显示的,所以当您告诉计算机以这种方式显示它时,您得到了混乱的字符。jar命令行工具是有意的(我相信)用于创建JAR文件。如果您想通过管道将JAR文件传输到其他输出流,那么从Java程序执行该操作相当容易。没问题。很高兴我能提供帮助!应该是JAR cf
,而不是JAR cv
。为什么要将JAR存档输出到system out?f使其写入的文件就是JAR。通过键入JARcv
而不是jar cf
,您告诉它通过命令提示符输出jar的内容,而不是将其写入文件。因为它不是以明文显示的,所以当您告诉计算机以这种方式显示它时,您得到了混乱的字符。jar命令行工具是有意的(我相信)用于创建JAR文件。如果您想通过管道将JAR文件传输到其他输出流,那么从Java程序执行该操作相当容易。没问题。很高兴我能提供帮助!谢谢您的回答。但是从我在问题中链接的文档中,“f选项表示您希望输出到文件而不是标准输出。”-但是,如果我不关心文件,并且确实希望输出进入输出流,该怎么办?我正在学习,希望分别尝试每个选项,以便我能很好地理解。谢谢你的回答。但是从我在问题中链接的文档中,“f选项表示您希望输出进入文件,而不是标准输出。”-但是,如果我不关心文件,并且确实希望输出进入输出流,该怎么办?我正在学习,希望分别尝试每个选项,以便更好地理解它。