Java 找不到主类,程序将退出

Java 找不到主类,程序将退出,java,jar,Java,Jar,我在Windows7中使用 jar cvfm MyJarName.jar manifest.txt *.class 它创建了.jar文件。但当我试图打开它时,我会看到一个弹出窗口,上面写着 Could not find the main class: <ClassName>. Program will exit. 在命令提示下,它可以正常工作。怎么回事?我希望能够双击它。提取jar并将jar内的清单内容与外部manifest.txt进行比较。很可能您会找到问题。如果您使用的是JD

我在Windows7中使用

jar cvfm MyJarName.jar manifest.txt *.class
它创建了.jar文件。但当我试图打开它时,我会看到一个弹出窗口,上面写着

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

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

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

如果您使用的是
JDK 1.6
或更高版本,则可以通过
Jar
工具的
e
标志覆盖清单属性。(改为:

例如:

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

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

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

检查这样做(在我的机器上工作):

将文件设为x.java

  • 编译javacx.java文件
  • jar cfe k.jar x.class//k.jar是jar文件
  • java-jark.jar

  • 清单文本文件必须以新行或回车结束。如果最后一行没有以新行或回车结束,将无法正确解析。

    我也遇到了同样的问题。我所做的是右键单击项目->属性,然后从“选择/二进制格式”组合框中选择JDK 6。然后我做了清洁和建造,现在当我点击罐子时,它工作得很好

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

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


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

    向我们展示清单文件的内容我无法从您所解释的内容中分辨出来,但一般来说,如果您的主类是“com.main”,那么main.class需要存在于jar中的“com”文件夹中。可能的副本是,我的清单文件只包含“main class:NatTimer”行因为我的类名是NatTimer。。。当我从罐子里取出一根时,它上面有两条额外的线;“清单版本:1.0”和“创建人:1.7.0(Oracle公司)”但这可能不是问题所在,对吗?现在,当我制作jar时,代码中没有任何包语句,也没有任何用于jaring的特殊文件夹。。。这就是问题所在,不是吗?我也有同样的问题,但我已经安装了jre7,但由于我的应用程序是32位的,所以我不得不下载并安装jre7-i586(x86)。谢谢你的回答!
    c:>java -jar app.jar
    
    java -jar jarname.jar