找不到主类,程序会退出

时间:2011-10-01 02:39:47

标签: java jar

我使用

在Windows 7中使用命令提示符创建了一个可执行jar
jar cvfm MyJarName.jar manifest.txt *.class

创建了.jar文件。但是当我尝试打开它时,我会弹出一个窗口,上面写着

Could not find the main class: <ClassName>. Program will exit.

然而,当我使用

java -jar jarName.jar

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

8 个答案:

答案 0 :(得分:41)

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

java -jar jarname.jar

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

答案 1 :(得分:3)

如果您使用的是JDK 1.6或更高版本,则可以通过e工具的Jar标记覆盖清单属性。 (阅读 - Setting an Entry Point with the JAR Tool)

示例:

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

我遇到了同样的问题。我所做的是我右键单击了项目 - &gt;属性,并从&#34;选择/二进制格式&#34;组合框,我选择了JDK 6.然后我做了清理和构建,现在当我点击Jar,它工作得很好。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

如果使用较低版本的Java(示例Java1.5)构建源文件并尝试使用较高版本的Java(例如java 1.6)运行该程序/应用程序,则会出现此问题。 有关更好的解释,请参阅此链接click here

答案 6 :(得分:0)

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

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

答案 7 :(得分:-1)

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

让文件为x.java

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