如何在NetBeans项目生成的jar中的清单文件中设置Main类

时间:2010-05-17 11:36:11

标签: java netbeans manifest

我有以下问题。我在NetBeans IDE 6.8中有一个Java项目。当我编译它并产生一个包含所有可能的.jar文件时,META-INF就不对了。它不包含要执行的类 - 使用main()方法。

当我单击IDE中的“运行”按钮时,一切正常。项目的设置也是正确的 - 指向我项目中的一个类。

我尝试使用清单文件添加文件夹META-INF,但我没有管理。

有没有办法在NetBeans中手动执行此操作,因为我发现如果我在清单中添加缺少的Main类,一切正常。

(我想我遇到了某种错误......)

//编辑: 我之后的结果是,我希望使用NetBeans构建创建的jar可以使用命令执行:

引自Sun Documentation

在清单文件中设置Main-Class后,您可以从命令行运行该应用程序: java -jar app.jar

10 个答案:

答案 0 :(得分:28)

我将对提议的解决方案和帮助我的解决方案进行总结!

阅读此错误报告后:  bug in the way NetBeans 6.8 creates the jar for a Java Library Project.

  1. 在我的项目根

  2. 中创建manifest.mf文件
  3. 编辑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
    
  4. 打开文件/nbproject/project.properties

  5. 添加行

    manifest.file=manifest.mf

  6. 清洁+项目建设

  7. 现在.jar已成功构建。

    非常感谢 vkraemer

答案 1 :(得分:4)

看起来你遇到了bug in the way NetBeans 6.8 creates the jar for a Java Library Project

这个问题意味着有一种解决方法。

我无法使用NB 6.8和/或NetBeans 6.9-dev ...

验证

您可能需要在NetBeans.org网站/问题跟踪器中注册并更新问题并添加“投票”。

答案 2 :(得分:3)

很简单。

  • 右键单击项目
  • 转到属性
  • 转到类别
  • 中的运行
  • 在右侧面板中设置 Main Class
  • 构建项目

多数民众赞成。希望这会有所帮助。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

将manifest.file = manifest.mf添加到project.properties并在项目目录中创建manifest.mf文件在NB 6.9中正常工作,并且也应该在NB 6.8中工作。

答案 5 :(得分:0)

这仍然是7.2.1的问题。创建一个库,因为如果你把它变成一个应用程序,你就不知道它会做什么。你搞砸了。

虽然找到了如何解决这个问题。修改nbproject/project.properties,将以下行更改为false,如下所示:

mkdist.disabled=false

在此之后,您可以更改属性中的主类,它将反映在清单中。

答案 6 :(得分:0)

真正的问题是Netbeans如何JAR项目。实际发布程序供其他人使用时,清单文件中的“Class-Path:”是不必要的。如果您在Netbeans中添加了外部库,则它将充当程序包。我建议你使用像WINRAR这样的程序来查看jar中的文件,并将你的库作为包直接添加到jar文件中。

jar文件的内部应该如何显示:

MyProject.jar

    Manifest.MF
         Main-Class: mainClassFolder.Mainclass

    mainClassFolder
         Mainclass.class

    packageFolder
         IamUselessWithoutMain.class

答案 7 :(得分:0)

我阅读并阅读并阅读以找出为什么我收到类未找到错误,但事实证明 manifest.mf 在行中出错:

Main-Class: com.example.MainClass

我通过转到项目属性对话框(右键单击项目文件),然后运行主类来修复错误并纠正了Netbeans决定放在这里的任何内容。 Netbean插入了项目名称而不是类名。不知道为什么。可能在muratina上喝醉了......

答案 8 :(得分:0)

不要犹豫,但在您首次构建项目后便会查看您的项目文件。查找清单文件,然后选择“使用记事本打开”。

添加行:

Main-Class: package.myMainClassName

其中package是您的软件包,而myClassName是具有main(String[] args)方法的类。

答案 9 :(得分:0)

兄弟,您无需设置类路径,只需遵循以下简单步骤(我使用Apache NetBeans)

步骤:

  1. 提取要添加到项目中的jar文件。

  2. 仅复制项目中所需的那些软件包(文件夹)。 (不要复制清单文件)

  3. 使用WinRAR打开主项目jar文件(dist / file.jar)。

  4. 将该文件夹或程序包粘贴到主项目jar文件中。

  5. 这些软件包在您的项目中可以100%工作。

警告:请勿在清单文件中进行任何更改。

另一种方法:

  • 在我的情况下,lib文件夹位于dist(主jar文件)文件夹之外。
  • 我们需要将lib文件夹移到dist文件夹中,然后从 主jar文件的manifest.mf文件。

    编辑manifest.mf并添加这种类型的行

  • 类路径:lib \ foldername \ jarfilename.jar lib \ foldername \ jarfilename.jar

警告: lib文件夹必须位于dist文件夹中,否则jar文件无法访问您的lib文件夹jar文件