“线程中的异常”;“主要”;java.lang.NullPointerException:尝试运行jar文件时

“线程中的异常”;“主要”;java.lang.NullPointerException:尝试运行jar文件时,java,exception,jar,nullpointerexception,Java,Exception,Jar,Nullpointerexception,当我运行命令java-jar MyJar.jar时,我得到以下错误: Exception in thread "main" java.lang.NullPointerException at sun.launcher.LauncherHelper.getMainClassFromJar(Unknown Source) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 这些错误是什么?我出现这些错误的原

当我运行命令
java-jar MyJar.jar
时,我得到以下错误:

Exception in thread "main" java.lang.NullPointerException
    at sun.launcher.LauncherHelper.getMainClassFromJar(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
这些错误是什么?我出现这些错误的原因可能是什么

在我将包打包到jar文件中之前,场景是:

然后,我通过输入以下内容将上述文件与包一起打包:

jar -cf MyJar.jar .\Design\*.class .\InterfaceImplementation\*.class .\Interfaces\*.class .\messenger\*.class Manifest.MF RemoteMethodImpl_Stub.class
注意:当我解压缩jar文件时,有一个名为
META-INF
的文件夹,其中也包含
MANIFEST.MF
,但不包含主类的名称


my MANIFEST.MF:
Main Class:messenger.messenger
的内容也尝试使用正斜杠

该错误显然是由于清单中缺少主类造成的……您可以像这样在清单中指定主类

Main-Class: com.Main

要添加jar不足以将其包含在文件中,您必须使用
m
选项,如

jar cmf myManifestFile myFile.jar *.class
根据。选项
m
f
的顺序必须与
MANIFEST
文件和jar文件名称的参数顺序相匹配


还要考虑此警告:现有清单文件必须以新行字符结尾。如果清单文件的最后一行没有以新行字符结尾,jar不会解析它。

要清楚,清单的内容是什么。MF?@madth3
Main类:messenger/messenger
此处messenger是目录,messenger是主classI的名称,它应该是类的完全限定名。然后我得到以下异常:
java.io.FileNotFoundException:MyJar.jar(系统找不到指定的文件)位于java.io.FileInputStream.open(本机方法)位于java.io.FileInputStream。(FileInputStream.java:137)位于java.io.FileInputStream。(FileInputStream.java:96)在sun.tools.jar.Main.run(Main.java:170)在sun.tools.jar.Main.Main(Main.java:1176)
什么时候出现错误?是在创建jar还是在执行?如果是第一个,则必须遵循选项和参数的顺序。如果是后者,您是否验证了jar中的MANIFEST.MF是否正确?