如何使用manifest.mf来包含主类的正确位置?

时间:2010-12-09 18:45:27

标签: java netbeans manifest noclassdeffounderror classnotfoundexception

任何人都可以帮我吗?我找不到能满足我需要的任何东西。我发现的所有答案都与向清单文件添加其他库有关。

情况如下:

我使用NetBeans 6.9编写了一个游戏。游戏是用Java编写的。大约有80个班级。所有类都包含在默认包中。游戏正确执行。我已经在这个项目上工作了大约18个月,并且在我开发游戏时我始终保持可执行代码。

我做了什么:

我需要从我写的静态类中导入一些东西到我正在处理的另一个类中。为了做到这一点,我不得不将所有东西都移出默认包。我使用NetBeans将所有内容重构为自定义包。

发生了什么:

当我进行“清理和构建”时,项目构建成功。 当我执行“运行主项目”时,我收到以下错误:

java.lang.NoClassDefFoundError: WarMachine
Caused by: java.lang.ClassNotFoundException: WarMachine
...stack trace
Could not find the main class: WarMachine. Program will exit.

我检查了.jar文件,我看到所有已编译的.class文件都在那里,包括主类(称为WarMachine.class)。所有.class文件都在一个名为Machine的目录中(这是我将NetBeans重构为所有内容的包名称。)

从我在互联网上找到的,问题是我的manifest.mf文件没有指向WarMachine.class文件的正确位置。

我的清单文件需要说什么?我不使用任何其他库或类似的东西。我有78个课程,所有课程都在“机器”包中。谁能帮我?

谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

你必须告诉Netbeans主类文件在哪里。右键单击项目,选择“属性”,然后转到左侧的“运行”树元素。

您现在将在右侧有一个“主类”文本框。单击“浏览”并选择您的主类。然后,Netbeans应该为您修复清单文件。

Run properties screenshot

如果您好奇,dist文件夹的.jar文件中的清单文件应该有这样一行:

Main-Class: Machine.WarMachine

另外,对于包名称使用小写字母被认为是标准做法。您应该致电您的包machine