基本上,我正在学习可执行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
任何想法,我在这里犯了什么错误?
答案 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
命令中为其提供正确的(文件系统)路径即可。