因此,由于 Netbeans 生成的 jar 需要它也生成的 lib 文件夹,我该如何将 lib 文件夹添加到生成的 jar 并更改 Manifest 以便它在不使用任何命令行的情况下启动?
4 回答
..所以它在没有任何命令行使用的情况下启动?
如果它有 GUI,请使用Java Web Start启动它。
JWS 提供了许多吸引人的功能,包括但不限于启动屏幕、桌面集成1、文件关联、自动更新(包括延迟下载和更新的编程控制)、按平台、架构或 Java 版本划分本地和其他资源下载,运行时环境配置(最低 J2SE 版本、运行时选项、RAM 等),使用扩展轻松管理公共资源。
- 桌面集成:支持平台上的桌面快捷方式和菜单项 - 不再基于命令行启动!
请参阅在 NetBeans IDE 中启用 Java Web Start以开始使用。
虽然有很多方法可以做到这一点,但它们大多涉及到 Ant build.xml 的修改。这是迄今为止我发现的最好的教程。仅供参考,还有其他非常相似的 SO 问题。
NetBeans IDE 自动处理所有这些。
- 新项目 -> Java / Java 桌面应用程序
- 按下一步,填写所有内容并选中“使用专用文件夹存储库”,按完成
- 转到文件视图,双击 build.xml 并从“Ant 目标”列表中找到“jar”目标,右键单击“运行目标”。
这样,生成的 .jar 文件将包含所有依赖项并具有带有 Main-Class 集的清单:
Manifest-Version: 1.0 Ant-Version: Apache Ant 1.8.1 Created-By: 1.6.0_26-b03 (Sun Microsystems Inc.) Main-Class: desktopapplication1.DesktopApplication1 Class-Path: lib/appframework-1.0.3.jar lib/swing-worker-1.1.jar
已编辑:这不会将库打包到 .jar 中,而是将它们放在旁边的单独库中。见@user845279
I ended up using ninjacave.com/jarsplice to compile it all (libraries included) into one executable jar. (I got an error with the background color being the default color even though I had set it to a different color, so I modified the code that jarsplice uses to launch your program using java rather than the path to java)