从命令行创建JAR文件时,为什么会出现这种奇怪的输出?

时间:2016-04-29 05:44:32

标签: java command-line jar command-line-arguments executable-jar

我在一个文件夹“D:\ Workspaces \ Workspace \ Packaging Programs into JAR Files \ src”中写了一个HelloWorld类。我正在尝试在this tutorial之后创建一个包含此HelloWorld.class文件的Jar文件。所以我在src目录中打开了cmd并执行了以下命令。

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>

为什么会这样?我犯了错误吗?

1 个答案:

答案 0 :(得分:4)

您缺少-f参数,该参数告诉JAR工具输出到文件而不是控制台:

jar cvf HelloWorld.jar HelloWorld.class

<强>更新

通过告诉JAR将输出发送到标准输出,然后重定向到您想要的实际JAR文件,您可以获得与上面没有 -f标志的相同的结果。因此,以下内容将完成与上述相同:

jar cv HelloWorld.class > HelloWorld.jar

应该注意的是,将JAR的输出管道输出到输出文件是操作系统的一个特性,而不是Java的一个特性。