当我运行命令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
,但不包含主类的名称。
我的MANIFEST.MF的内容:Main-Class : messenger.Messenger
也尝试使用正斜杠
答案 0 :(得分:1)
错误显然是由于清单中缺少主类...您可以在清单中指定主类,如此
Main-Class: com.Main
答案 1 :(得分:1)
要添加jar不足以将其包含在文件中,您必须使用m
选项,例如
jar cmf myManifestFile myFile.jar *.class
根据jar documentation。选项m
和f
的顺序必须与MANIFEST
文件名称和jar文件的参数顺序相匹配。
同时考虑此警告:现有清单文件必须以新行字符结尾。如果清单文件的最后一行没有以换行符结尾,则jar不会解析清单文件的最后一行。