(filename.jar)和(java -jar filename.jar)之间的区别

时间:2014-02-15 08:51:23

标签: java

我只是想知道为什么如果我输入命令提示符filename.jar它会弹出一条消息(找不到主类)但是如果我输入java -jar filename.jar,jar文件就可以了。有人可以向我解释为什么会发生这种情况吗?

4 个答案:

答案 0 :(得分:0)

jar文件不是可执行文件。 java -jar是运行它的正确方法。

答案 1 :(得分:0)

Java是一种基于解释器的语言,你需要将jar文件作为解释器的输入来执行。

如果我错了,请纠正我。

PS:Downvoters或编辑请提及原因。其中一半的人只是在编辑时重复了句子。

答案 2 :(得分:0)

.jar个文件至少可以在Windows和Mac OS上执行。 (没有 native 代码,但它们与将用于打开它们的程序有关联,在本例中为 Java

因此,如果您双击这些操作系统上的jar文件,它们将在内部调用java,就像您使用jar文件作为参数键入java -jar一样。

但是,如果您的计算机上安装了多个Java版本,则双击可能会打开使用不同Java版本的jar文件,而不是在命令行上键入java -jar。“ p>

这完全取决于您的操作系统,因此您需要在问题中指明。

<。> .jar文件与.zip文件具有完全相同的格式(因为它们是具有不同扩展名的.zip文件)。在jar / zip文件中有一个名为META-INF / MANIFEST.MF的文件,该文件指定在双击或键入java -jar时应调用哪个类。

如果您可以显示该文件中的内容,则会有所帮助。如果安装了unzip命令,则可以使用以下命令显示该文件的内容:

unzip -p 文件名 .jar META-INF/MANIFEST.MF

如果没有解压缩,您可以提取整个jar文件并查看META-INF / MANIFEST.MF:

jar xf 文件名 .jar

  • 您使用的是哪种操作系统?
  • 您是否安装了多个Java版本?
  • META-INF/MANIFEST.MF文件中的内容是什么?

答案 3 :(得分:0)

为了清楚起见,Java是一种需要Java虚拟机运行的编程语言,在创建项目后创建一个类并在其中键入一些代码,然后在编译编译器时创建.class文件和那么你需要一个Java虚拟机来运行编译器创建的.class文件。 jar文件不是可执行文件,它以pkzip格式压缩,因此每个jar文件都包含一个MANIFEST文件,在该文件中指定mainClass以使球运行(运行程序)。要运行jar,请使用java -jar <jarfile>命令