如何在NetBeans项目生成的jar文件中的清单文件中设置Main类
我有以下问题。 我在NetBeans IDE 6.8中有一个Java项目。 当我编译它并生成一个包含所有可能的.jar文件时,META-INF就不对了。 它不包含要执行的类 – 使用main()方法。
当我单击IDE中的“运行”按钮时,一切正常。 项目的设置也是正确的 – 指向我项目中的一个类。
我尝试添加一个文件夹META-INF与清单文件,但我没有管理。
有没有办法在NetBeans中手动执行此操作,因为我发现如果我在清单中添加缺少的Main类,一切正常。
(我想我遇到了某种错误…)
//编辑:我所追求的结果是我希望使用NetBeans构建创建的jar可以使用命令执行:
从Sun文档引用:
在清单文件中设置Main-Class后,您可以从命令行运行该应用程序: java -jar app.jar
我将对提出的解决方案和帮助我的解决方案进行总结!
阅读此错误报告后: NetBeans 6.8为Java库项目创建jar的方式存在错误。
-
在我的项目根目录中创建manifest.mf文件
-
编辑manifest.mf。 我看起来像这样:
Manifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 16.3-b01 (Sun Microsystems Inc.) Main-Class: com.example.MainClass Class-Path: lib/lib1.jar lib/lib2.jar
-
打开文件/nbproject/project.properties
-
添加行
manifest.file=manifest.mf
-
清洁+建立项目
现在.jar已成功构建。
非常感谢vkraemer
您似乎遇到了NetBeans 6.8为Java库项目创建jar的方式中的错误 。
这个问题意味着有一种解决方法。
我无法使用NB 6.8和/或NetBeans 6.9-dev来validation…
您可能希望在NetBeans.org网站/问题跟踪器中注册并更新问题并添加“投票”。
很简单。
- 右键单击该项目
- 转到“ 属性”
- 转到“在类别中 运行”树
- 在右侧面板中设置Main Class 。
- 建立项目
而已。 希望这可以帮助。
在7.3中,只需启用属性/构建/打包/复制从属库,主要类将根据所选目标在构建时添加到清单中。
将manifest.file = manifest.mf添加到project.properties并在项目目录中创建manifest.mf文件在NB 6.9中正常工作,并且也应该在NB 6.8中工作。
这仍然是7.2.1的问题。 创建一个库,因为如果你把它作为一个应用程序并且你被搞砸了,你就不知道它会做什么。
确实找到了如何解决这个问题。 编辑nbproject/project.properties
,将以下行更改为false,如下所示:
mkdist.disabled=false
在此之后,您可以更改属性中的主类,它将反映在清单中。
真正的问题是Netbeans如何JAR项目。 实际发布程序供其他人使用时,Manifest文件中的“Class-Path:”是不必要的。 如果您在Netbeans中添加了外部库,则它将充当程序包。 我建议你使用像WINRAR这样的程序来查看jar中的文件,并将你的库作为包直接添加到jar文件中。
jar文件的内部应该如何显示:
MyProject.jar Manifest.MF Main-Class: mainClassFolder.Mainclass mainClassFolder Mainclass.class packageFolder IamUselessWithoutMain.class
我阅读并阅读并阅读以找出为什么我得到一个类未找到错误,结果发现manifest.mf在行中有错误:
Main-Class: com.example.MainClass
我通过转到Project Properties对话框(右键单击Project Files ),然后Run和Main Class修正了错误,并修正了Netbeans决定放在这里的任何内容。 Netbean插入了项目名称而不是类名。 不知道为什么。 可能在muratina上醉了…
在第一次构建项目后,请不要犹豫,但要查看项目文件。 查找清单文件,然后选择用记事本打开。
添加行:
Main-Class: package.myMainClassName
package
是你的包, myClassName
是带有main(String[] args)
方法的类。