【问题标题】:I keep getting "Could not find or load main class" error despite using a Manifest file for an executable jar [duplicate]尽管对可执行 jar 使用清单文件,但我不断收到“无法找到或加载主类”错误 [重复]
【发布时间】:2019-02-24 17:49:52
【问题描述】:

基本上我是在学习一个可执行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

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

【问题讨论】:

  • 我已经阅读了所有这些答案,这就是我知道我必须添加此清单文件的原因。我这样做了,但仍然收到错误。
  • 抱歉,这行不通。第一个答案是关于源路径和类路径必须如何组合在一起的length。 com/mftest 是类名的一部分,因此层次结构必须匹配。
  • @GhostCat。别担心,我现在可以正常工作了。

标签: java jar manifest executable executable-jar


【解决方案1】:

从 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 命令中为其提供正确的(文件系统)路径即可。

【讨论】:

  • 你的意思是 Manifest.txt 文件应该在 bin 目录下,我应该从那里输入 jar cmvf Manifest.txt Test.jar com\mftest\*.class?
  • 美人,这确实解决了问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-16
  • 2020-06-02
  • 2011-08-13
  • 1970-01-01
  • 2015-07-27
  • 2020-06-23
  • 2017-07-30
相关资源
最近更新 更多