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



我只是想知道为什么如果我在命令提示符filename.jar中键入,它会弹出一条消息(找不到主类),但如果我在java -jar filename.jar中键入,jar文件会正常工作。有人能向我解释为什么会发生这种事吗?

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

Java是一种基于解释器的语言,您需要将jar文件作为输入提供给解释器以执行。

如果我错了,请纠正我。

附言:落选者或编辑请说明原因。。因为他们中有一半只是在编辑时重新迭代句子。

.jar文件至少可在Windows和Mac操作系统上执行。(没有本机代码,但它们与用于打开它们的程序有关联,在这种情况下是Java)

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

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

它的工作方式取决于您的操作系统,因此您需要在问题中指定。

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

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

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

无需解压缩,就可以提取整个jar文件并查看META-INF/MANIFEST.MF:内部

jar xf文件名.jar

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

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

最新更新