在NetBeans中生成可执行jar

时间:2009-03-02 14:34:02

标签: java netbeans jar executable manifest

我正在使用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.)

17 个答案:

答案 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>

来源:Maven Assembly Plugin Usage

答案 2 :(得分:5)

试试这个:

  1. 在“项目”面板上右键单击您的项目,选择“属性”

  2. 点击新窗口中的“运行”。

  3. 编辑“Main Class:”字段(单击Browse)。

  4. 这样您就可以选择主类,它是应用程序的入口点,并且将正确创建清单。

答案 3 :(得分:4)

非常简单,{j}和.jad文件位于dist文件夹

我也在寻找答案,并从http://forums.netbeans.org/ptopic3465.html

获得了这个答案

解决了:)

答案 4 :(得分:2)

答案 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 ...

手动强制打包创建
  1. 在项目导航器中,展开&lt; 项目&gt;然后右键单击Project Files / pom.xml
  2. 点击“运行Maven /目标”
  3. 在目标字段中输入“包”
  4. 点击确定
  5. 然后输出窗口将显示(在Mac上)......

    Building jar: /Users/<username>/NetBeansProjects/<project>/target/<project>-1.0-SNAPSHOT.jar
    

答案 12 :(得分:0)

在7.3中,只需启用属性/构建/打包/复制从属库,主要类(取决于所选目标)将在构建时添加到清单中。

答案 13 :(得分:0)

有趣的信息可能在这里:

http://wiki.netbeans.org/FaqNoMainClass

答案 14 :(得分:0)

转到“文件”视图。 在根目录中创建manifest.mf。

/project_folder
    build.xml
    manifest.mf(edit here)
    /dist
    /src
    /test
    /build

答案 15 :(得分:0)

另一种方法完全是在NetBeans中开发,运行单元测试等,然后使用maven或ant脚本来进行“真正的”构建。看起来这些类型的构建工具可以让您更好地控制构建方式,还可以让您自动构建构建。

对于maven,您可以使用maven jar插件轻松地向清单添加条目:

http://maven.apache.org/plugins/maven-jar-plugin/

答案 16 :(得分:0)

确实很奇怪,它应该开箱即用,包括类路径。

您是否从之前的版本升级了?升级时,NB会升级项目文件,但有时这种迁移工作不顺利,弹出这种情况。只需关闭项目,将nbproject目录重命名为nbproject_old并执行新项目 - &gt;具有现有源的Java项目。再次设置主类并添加依赖项,然后重试。