java - 尽管对可执行 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
任何想法,我在这里做错了什么?
解决方案
从 bin\com\mftest 文件夹中,我现在键入 jar cmvf Manifest.txt Test.jar *.class 以创建文件 bin\com\mftest\Test.jar
我想我看到了你的问题。
如果您运行jar tvf Test.jar
,我希望您会看到Test.class
JAR 文件中文件的路径是"/Test.class"
. 应该是"/com/mftest/Test.class"
。
您的错误是将目录更改为bin\com\mftest
. 您应该已经从bin
目录中创建了 JAR 文件,以使 JAR 中的路径名正确。
请注意,您包含在 JAR 中的清单文件可以在任何地方。您只需要在jar
命令中为其提供正确的(文件系统)路径。
推荐阅读
- python - 在字符串 s 中查找字符串 t 的所有索引值?
- c# - Blazor 表单上多个组件的绑定和验证
- r - 如何使用 R 中的数据框元素创建随机游走?
- java - 如何在从本机android访问颤振资源时将键字符串转换为可绘制(int)
- azure - Azure 静态 Web 应用程序的更深入分析?
- python - 如何在可滚动、可调整大小的命令窗口中启动 Python 程序(在 Windows 中)
- javascript - 如何添加新项目并在没有超时的情况下呈现它?反应
- r - 计算 R 中特定过去时间长度内当前两个 ID 对的出现次数
- flutter - 获得“未来”
' 不是“字符串”类型错误的子类型,为什么要在颤振应用程序中从网站上抓取数据? - python - Spyder IDE:重新启动内核..,spyder 中的 ipython 控制台