首页 > 解决方案 > 尽管对可执行 jar 使用清单文件,但我不断收到“无法找到或加载主类”错误

问题描述

基本上我是在学习一个可执行 jar 文件的编译过程。因此,为此,在一个目录src\com\mftest中,我有一个名为 的文件Test.java,其内容如下。

package com.mftest;

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

现在,在我也有文件夹的主文件夹(包含文件夹的src文件夹)中bin,我键入javac -d bin src\com\mftest\Test.java. 这将创建文件bin\com\mftest\Test.class

然后,从文件夹bin\com\mftest中,我创建一个Manifest.txt包含以下内容的文件。注意这里有两行,第二行是空白的。

Main-Class: com.mftest.Test

bin\com\mftest文件夹中,我现在键入jar cmvf Manifest.txt Test.jar *.class以创建文件bin\com\mftest\Test.jar。我希望该文件是可执行的,但是当我尝试通过键入来运行它时java -jar Test.jar,我收到以下错误。

Error: Could not find or load main class com.mftest.Test
Caused by: java.lang.ClassNotFoundException: com.mftest.Test

任何想法,我在这里做错了什么?

标签: javajarmanifestexecutableexecutable-jar

解决方案


从 bin\com\mftest 文件夹中,我现在键入 jar cmvf Manifest.txt Test.jar *.class 以创建文件 bin\com\mftest\Test.jar

我想我看到了你的问题。

如果您运行jar tvf Test.jar,我希望您会看到Test.classJAR 文件中文件的路径是"/Test.class". 应该是"/com/mftest/Test.class"

您的错误是将目录更改为bin\com\mftest. 您应该已经从bin目录中创建了 JAR 文件,以使 JAR 中的路径名正确。

请注意,您包含在 JAR 中的清单文件可以在任何地方。您只需要在jar命令中为其提供正确的(文件系统)路径。


推荐阅读