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

Java 如何在NetBeans项目生成的jar中的清单文件中设置主类,java,netbeans,manifest,Java,Netbeans,Manifest,我有以下问题。我的NetBeans IDE 6.8中有一个Java项目。当我编译它并生成一个包含所有可能内容的.jar文件时,META-INF是不对的。它不包含要执行的类-使用main()方法 当我单击IDE中的Run按钮时,一切都正常。项目的设置也设置正确-指向项目中的类 我尝试添加带有清单文件的META-INF文件夹,但没有成功 有没有办法在NetBeans中手动执行此操作,因为我发现如果在清单中添加缺少的主类,一切都会正常工作 (我想我碰到了某种错误…) //编辑: 我所追求的结果是,我希

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

当我单击IDE中的Run按钮时,一切都正常。项目的设置也设置正确-指向项目中的类

我尝试添加带有清单文件的META-INF文件夹,但没有成功

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

(我想我碰到了某种错误…)

//编辑: 我所追求的结果是,我希望使用NetBeans构建创建的jar可以通过以下命令执行:

引自:

在清单文件中设置主类后,可以从命令行运行应用程序:
java-jarapp.jar

它很简单

  • 右键单击项目
  • 转到属性
  • 转到类别树中的跑步
  • 在右侧面板中设置主类
  • 建设项目

就这样。希望这能有所帮助。

看起来你遇到了麻烦

这个问题意味着有一个解决办法

我无法验证NB 6.8和/或NetBeans 6.9-dev


您可能希望在NetBeans.org网站/issue tracker上注册,并更新问题并添加您的“投票”。

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

我将对建议的解决方案和解决方案进行总结那个帮助我的人

阅读此错误报告后:

  • 在我的项目根目录中创建manifest.mf文件

  • 编辑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
    
  • 打开文件/nbproject/project.properties

  • 添加行

    manifest.file=manifest.mf

  • 清洁+建设项目

  • 现在.jar已成功构建


    非常感谢vkraemer

    从7.2.1开始,这仍然是一个问题。创建一个库,因为如果你把它变成一个应用程序,你不知道它会做什么&你完蛋了

    但我发现了如何解决这个问题。编辑
    nbproject/project.properties
    ,将以下行更改为false,如图所示:

    mkdist.disabled=false


    在此之后,您可以在properties中更改main类,它将反映在manifest中。

    在7.3中,只需启用properties/Build/Package/Copy依赖库,在根据所选目标进行构建时,main类将添加到manifest中。

    真正的问题是Netbeans如何处理其项目。在实际发布程序供他人使用时,清单文件中的“类路径:”是不必要的。如果您在Netbeans中添加了一个外部库,它将充当一个包。我建议您使用WINRAR之类的程序来查看jar中的文件,并将库作为包直接添加到jar文件中

    jar文件内部的外观:

    MyProject.jar
    
        Manifest.MF
             Main-Class: mainClassFolder.Mainclass
    
        mainClassFolder
             Mainclass.class
    
        packageFolder
             IamUselessWithoutMain.class
    

    我读了又读,又读又读,想弄明白为什么我得到了一个类未找到错误,结果manifest.mf的行中有一个错误:

    Main-Class: com.example.MainClass
    

    我通过转到“项目属性”对话框(右键单击“项目文件”)修复了该错误,然后运行Main类并更正了Netbeans决定放在这里的任何内容。Netbean插入了项目名而不是类名。不知道为什么。可能在muratina喝得酩酊大醉…

    在您第一次构建项目后,请不要犹豫,查看您的项目文件。查找清单文件并选择“使用记事本打开”

    添加行:

    Main-Class: package.myMainClassName
    

    其中,
    package
    是您的包,
    myClassName
    是使用
    main(String[]args)
    方法的类。

    兄弟,您不需要设置类路径,只需按照以下简单步骤操作即可(我使用Apache NetBeans)

    步骤:

  • 提取要添加到项目中的jar文件

  • 仅复制项目中需要的包(文件夹)。(不要复制清单文件)

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

  • 将该文件夹或包粘贴到主项目jar文件中

  • 这些包在您的项目中100%有效

  • 警告:不要对清单文件进行任何更改

    另一种方法:

    • 在我的例子中,lib文件夹位于dist(主jar文件)文件夹之外
    • 我们需要移动dist文件夹中的lib文件夹,然后从中设置类路径 主jar文件的manifest.mf文件

      编辑manifest.mf并添加此类行

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

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

    首先,您可以创建两种jar。。。一个是简单的“jar”,另一个是“可执行jar”。确定你做对了吗?我从未在netbeans中尝试过这一点,但eclipse为您提供了一个wizzard来创建一个可执行的jar,您可以在那里选择主类。如果netbeans不提供类似的指导,我会感到惊讶@Philipp Andre:不确定是否有这样的向导,但有一个窗口“project preferences”,上面写着my Main.class,但在构建之后-清单文件中没有任何内容这解决了我的问题,但是我首先找到了这个解决方案,所以我想在这里发布@LeniKirilov,请帮助回答这个问题:这没有帮助-我已经在问题中描述过了抱歉,我的帖子。你的电话没打中