找不到主类,程序会退出

我在Windows 7中使用命令提示符创建了一个可执行jar

jar cvfm MyJarName.jar manifest.txt *.class 

它创建了.jar文件。 但是当我试图打开它时,我会看到一个弹出窗口

 Could not find the main class: . Program will exit. 

然而,当我使用时

 java -jar jarName.jar 

在命令提示符下,它工作正常。 这是怎么回事? 我希望能够双击它。

哈,我发现了问题所在。 我使用jdk1.7制作了我的程序,但是我安装了jre6。 我去升级到jre7,现在工作正常:)

 java -jar jarname.jar 

line正在命令提示符下工作,因为我的java路径设置为jdk文件夹。

如果您使用的是JDK 1.6或更高版本,则可以通过Jar工具的e标志覆盖清单属性。 (读取 – 使用JAR工具设置入口点) :

例:

 package pack; public class Test { public static void main(String []args) { System.out.println("Hello World"); } } 

编译并运行Jar工具,

 c:\>jar cfe app.jar pack.Test pack/Test.class 

调用应用程序

 c:>java -jar app.jar 

清单文本文件必须以新行或回车结束。 如果不以新行或回车结束,则不会正确解析最后一行。

我遇到了同样的问题。 我做的是我右键单击项目 – >属性,从“选择/二进制格式”combobox,我选择了JDK 6.然后我做了清理和构建,现在当我点击Jar,它工作得很好。

提取jar并将jar中清单的内容与外部manifest.txt进行比较。 你很有可能找到问题所在。

如果您使用较低版本的Java(示例Java1.5)构建源文件并尝试使用更高版本的Java(示例java 1.6)运行该程序/应用程序,您将遇到此问题。 有关更好的解释,请参阅此链接 点击这里

我在打开JMeter 4.0时遇到了这个问题。 我修复如下。

我在Program Files(x86)文件夹中安装了JRE 7,在Program files文件夹中安装了JDK 8。 所以我刚从机器上卸载了JRE7。 我只保留了JDK的最新版本。 它解决了这个问题。

以这种方式检查(在我的机器上工作):

让文件是x.java

  1. 编译文件javac x.java
  2. jar cfe k.jar x x.class //k.jar是jar文件
  3. java -jar k.jar