我正在使用NetBeans 6.5,由于某种原因,它不会“开箱即用”生成可执行jar。
我将项目设置为主项目,在项目属性“运行”菜单中定义主类,当我按F6运行它时,它可以完美地工作。
我查看了清单文件,它确实没有在那里定义主类,也省略了库依赖项。
的
我错过了什么吗?有没有办法(除了手动更改清单文件)生成可执行的jar文件?
编辑:是的,我尝试了清理和重建,它在dist文件夹中生成了jar,仍然使用相同的manifest.mf
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 10.0-b23 (Sun Microsystems Inc.)
答案 0 :(得分:7)
我在NetBeans 7.2.1中遇到了与Maven Java Application项目相同的问题。修改pom.xml文件以包含maven assembly plugin,并对myrho的答案进行一次调整(需要引用预定义描述符“jar-with-dependencies”):
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>your.app.MainClass</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
另一种方法是在NetBeans中构建一个不使用Maven的Java Application项目。选择文件 - &gt;项目属性 - &gt;构建 - &gt;打包并选中“复制从属库”复选框。
答案 1 :(得分:6)
如果您正在使用maven程序集插件并希望构建具有依赖项的可执行jar,则需要将此部分添加到pom.xml中maven-assembly-plugin部分的配置中:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<!-- ... -->
<archive>
<manifest>
<mainClass>your.app.SampleClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
答案 2 :(得分:5)
试试这个:
在“项目”面板上右键单击您的项目,选择“属性”
点击新窗口中的“运行”。
编辑“Main Class:”字段(单击Browse)。
这样您就可以选择主类,它是应用程序的入口点,并且将正确创建清单。
答案 3 :(得分:4)
答案 4 :(得分:2)
您清理项目并重建了吗?听起来你做得对。以下是一些参考资料:
http://www.velocityreviews.com/forums/t141385-how-to-create-executable-jar-in-netbeans-ide.html http://dr.berkeley.edu/REM/wiki/index.php/Making_a_Java_executable_jar_in_Netbeans
答案 5 :(得分:1)
如果你清理并构建项目,它应该在“dist”目录中创建jar。
它应该在项目目录的顶层创建manifest.mf。
答案 6 :(得分:1)
在遇到同样的问题之后,我实际上遇到了这个页面,我编辑了manifest.mf文件,但是更改没有显示在jar MANIFEST.MF文件中。我发现了我遇到的问题,并且认为我会传递信息以防万一它是相关的。
我做错了是因为我没有将我正在进行的项目设置为主项目,所以当我编辑正确的清单时,我正在编译错误的项目。
所以我想你的故事没有检查,看看你是否为你正在编辑的manifest.mf文件选择了正确的项目?
答案 7 :(得分:1)
也许你创建了 Java Project with Existing Sources 而不是 Java Application ?
我有类似的问题,并创建新的Java应用程序,然后手动复制src文件解决了问题 - 一切都“开箱即用”。
答案 8 :(得分:1)
我有经验,构建过程不同, 取决于项目类型。
我想,你已经创建了“Java类库”项目。
所以只需创建一个“Java Application”项目,然后将所有类合并到它。
然后,Netbeans 不会覆盖,但会将"manifest.mf"
增强到JAR中。
当然,这是一个愚蠢的Netbeans错误。当然应该可以添加main 之后的课程。
编辑:请参阅我的其他答案。这更容易。
答案 9 :(得分:0)
更好的解决方案:
编辑nbproject / project.properties并添加条目:
manifest.file=manifest.mf
manifest.mf
应该在项目的根目录中并且只包含:
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build
作品。测试
答案 10 :(得分:0)
使用neatbean,您可以执行以下步骤:
1.右键单击名称项目选择项目设置配置,然后选择自定义
2.选择运行并注意主类
3.如果要运行,请选择浏览并设置类。点击确定后。
4.完成。
答案 11 :(得分:0)
使用NetBeans IDE 8.0.2 ...
手动强制打包创建然后输出窗口将显示(在Mac上)......
Building jar: /Users/<username>/NetBeansProjects/<project>/target/<project>-1.0-SNAPSHOT.jar
答案 12 :(得分:0)
在7.3中,只需启用属性/构建/打包/复制从属库,主要类(取决于所选目标)将在构建时添加到清单中。
答案 13 :(得分:0)
有趣的信息可能在这里:
答案 14 :(得分:0)
转到“文件”视图。 在根目录中创建manifest.mf。
/project_folder
build.xml
manifest.mf(edit here)
/dist
/src
/test
/build
答案 15 :(得分:0)
另一种方法完全是在NetBeans中开发,运行单元测试等,然后使用maven或ant脚本来进行“真正的”构建。看起来这些类型的构建工具可以让您更好地控制构建方式,还可以让您自动构建构建。
对于maven,您可以使用maven jar插件轻松地向清单添加条目:
答案 16 :(得分:0)
确实很奇怪,它应该开箱即用,包括类路径。
您是否从之前的版本升级了?升级时,NB会升级项目文件,但有时这种迁移工作不顺利,弹出这种情况。只需关闭项目,将nbproject目录重命名为nbproject_old并执行新项目 - &gt;具有现有源的Java项目。再次设置主类并添加依赖项,然后重试。