尽管将Manifest文件用于可执行jar,但我不断收到“找不到或加载主类”错误

时间:2018-09-20 12:01:15

标签: java jar manifest executable executable-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

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

1 个答案:

答案 0 :(得分:2)

  

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

我想我看到你的问题了。

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

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

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