2009-03-02 64 views
19

我使用的是NetBeans 6.5,由于某些原因,它不会生成可执行的“开箱”jar。在NetBeans中生成可执行文件jar

我将我的项目设置为主项目,在项目属性“运行”菜单中定义了主类,并且当我按F6运行它时,它完美地工作。

我看了清单文件,它确实没有在那里定义主类,也省略了库依赖关系。



我错过了什么吗?有没有一种方法(除了手动更改清单文件)生成可执行的jar文件?

编辑:是的,我试图清理并重建,并与同MANIFEST.MF

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.7.1 
Created-By: 10.0-b23 (Sun Microsystems Inc.) 
+0

奇数。很确定,NetBeans默认情况下会生成可执行文件。当你运行一个项目时,它甚至可以在控制台输出中为我显示。没有NetBeans在工作,所以我不能真正重复检查:( – willcodejavaforfood 2009-03-02 14:37:11

+2

项目目录中的manifest.mf并没有逐字复制到.jar文件中。当您“清理并且清除”主类属性和任何库路径时,构建“该项目 – 2009-03-02 14:42:22

+0

是的,它会默认生成可执行的jar文件,请尝试清理并重新编译 – 2009-03-02 14:44:16

回答

0

奇怪的,它应该做的出来,包括类路径的开箱。

您是否从以前的版本升级?升级时,NB会升级项目文件,但有时候这种迁移不能很好地完成,这种情况会弹出。只需关闭该项目,将nbproject dir重命名为nbproject_old,然后执行新项目 - >使用现有源的Java项目。再次设置主类并添加依赖关系,然后重试。

0

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

Maven的,您可以轻松地使用maven的JAR插件可以添加条目清单:

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

0

转到Files视图。 在根目录下创建一个manifest.mf文件。

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

如果您清理并构建您的项目,它应该在“dist”目录中创建jar。

它应该在项目目录的顶层创建manifest.mf。

1

我碰到这个页面后遇到了同样的问题,我编辑了manifest.mf文件,但是这些变化没有出现在jar MANIFEST.MF文件中。我发现我遇到的问题,并认为我会传递信息以防万一它是相关的。

我做错了什么是我没有将我正在设置的项目设置为主项目,所以当我编辑正确的清单时,我正在编译错误的项目。

所以我想故事的短小,你检查,看看你是否选择了正在编辑的manifest.mf文件正确的项目?

1

也许你创建了Java Project with Existing Sources而不是Java应用程序

我有类似的问题,并创建新的Java应用程序,然后手动复制src文件解决了问题 - 一切工作“开箱”。

1

我有经验,建设过程不同, 取决于项目类型。

我想,你已经创建了“Java类库”项目。

因此,只需创建一个“Java应用程序”项目,然后将所有类合并到它。

然后,Netbeans将不覆盖,但将"manifest.mf"加入到JAR中。

当然,这是一个愚蠢的Netbeans错误。当然,应该可以在之后添加主要的 类。

编辑:请参阅我的其他答案。这很容易。

0

更好的解决方案:

编辑nbproject文件/ project.properties和添加条目

manifest.file=manifest.mf 

manifest.mf应该在项目的根和只包含:

Manifest-Version: 1.0 
X-COMMENT: Main-Class will be added automatically by build 

厂。测试。

5

试试这个:

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

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

  3. 编辑“主类:”字段(单击浏览)。

这样你将选择主要的类,它是你的应用程序的入口点,并且Manifest将被正确创建。

6

如果您正在使用Maven的组装插件,并希望建立一个可执行的JAR与依赖关系,你需要将此部分添加到您的pom.xml中Maven的组装插件部分的配置:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
    <!-- ... --> 
    <archive> 
     <manifest> 
     <mainClass>your.app.SampleClass</mainClass> 
     </manifest> 
    </archive> 
    </configuration> 
</plugin> 

来源:Maven Assembly Plugin Usage

7

我刚刚在NetBeans 7.2.1中使用Maven Java Application项目也遇到了同样的问题。修改pom.xml文件到maven assembly plugin一个好办法包括对myrho的答案(需要引用预先定义的描述符“JAR-与依存关系”):

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

的另一种方法是建立一个Java应用程序项目不使用Maven的NetBeans。选择文件 - >项目属性 - >生成 - >打包,然后选中“复制相关库”复选框。

0

在7.3中,只需启用属性/构建/包/副本从属库和主类(取决于选定的目标)将在构建时添加到清单中。

0

要手动强制创建与NetBeans IDE 8.0.2 ...

  1. 在Project Navigator中,展开您的< 项目>,然后右键单击项目文件/ pom.xml的
  2. 点击在目标领域运行Maven /目标
  3. 类型的 “一揽子”
  4. 单击确定
012然后

输出窗口将显示(在Mac上)...

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

好与neatbean你可以做下面的步骤如下: 1.右击名称项目选择项目设置配置和选择自定义
2.选择运行并注意主类
3.选择眉毛e并设置类,如果你想运行。点击确定后。
4.完成。