如何在java中设置默认主类?

时间:2009-10-28 04:05:15

标签: java netbeans

我在同一个包中有2个类。这两个类都有主要方法。现在我想构建一个jar文件。我想构建两个使用不同主要功能作为默认主要文件的jar文件。

例如

class A
{
  public static void main(String args[])
  {
    //do something
  }
}

class B
{
  public static void main(String args[])
  {
    //do something
  }
}

如何在NetBeans IDE中执行此操作?

我找到了答案。 你可以在netbeans中轻松完成: 1)右键单击项目>属性>运行>选择类frm和下拉列表。 netbeans如此简单。 Netbeans摇滚!

11 个答案:

答案 0 :(得分:19)

在jar文件中,您可以将其添加到manifest.mft

Main-Class : A

然后jar文件可执行,并调用正确的main。

关于如何在Netbeans中执行此操作,您可以查看以下内容: Producing executable jar in NetBeans

答案 1 :(得分:19)

在“项目”窗口中右键单击项目节点,然后选择“项目属性”。 然后找到运行,在那里你可以设置你的主类,**实际上从netbeans默认帮助

获得它

答案 2 :(得分:10)

您可以右键单击项目选择“设置配置”然后选择“自定义”,从那里您可以选择您的主类。 ScreenShot

答案 3 :(得分:5)

假设你的my.jar有一个class1和class2,每个都有一个main定义,你可以像这样调用java:

java my.jar class1

java my.jar class2

如果您需要为java指定其他选项,请确保它们位于my.jar

之前
java -classpath my.jar class1

答案 4 :(得分:3)

如果您要创建2个可执行JAR文件,每个文件都有自己的清单文件,每个清单文件都会指定包含您要用来开始执行的main()方法的类。

在每个JAR文件中,清单将是JAR中具有以下路径/名称的文件 - META-INF/MANIFEST.MF

有些方法可以使用JAR command-line parameters将备用命名文件指定为JAR的清单。

您要使用的特定类是使用META-INF / MANIFEST.MF文件中的Main-Class: package.classname指定的。

至于如何在Netbeans中做到这一点 - 不确定我的头脑 - 我通常使用IntelliJ和/或Eclipse,并且通常通过ANT或Maven构建JAR。

答案 5 :(得分:1)

如果您要创建的两个罐子大致相同,唯一的区别是应该从每个罐子开始的主要类别,您可以将所有类别放在第三个罐子中。然后创建两个罐子,每个罐子里只有一个清单。在MANIFEST.MF文件中,使用Main-Class属性命名条目类。

此外,请指定Class-Path属性。它的值应该是包含所有共享代码的jar文件的名称。然后将所有三个jar文件部署在同一目录中。当然,如果您有第三方库,那么它们也可以列在Class-Path属性中。

答案 6 :(得分:0)

您可以在jar文件的清单中设置Main-Class属性,以指向您想要自动运行的文件。

答案 7 :(得分:0)

最好的办法是在Ant脚本中处理这个问题。您可以为2个jar文件创建2个不同的任务。将类A指定为第一个jar的manifst文件中的主类。类似地将类B指定为第二个jar的清单文件中的主类。

您可以轻松地从Netbeans运行Ant任务。

答案 8 :(得分:0)

作为评论,我不得不允许客户在jar中执行一个类,这意味着无法修改清单文件(他们不能期望这样做)。感谢Anthony和samy-delux的评论,这就是客户现在可以运行以访问特定类的主要内容:

java -cp c:\path\to\jar\jarFile.jar com.utils.classpath -e -v textString

答案 9 :(得分:0)

按F11构建并运行程序。运行程序后,您将获得一个类列表。从列表中选择您的主类,然后单击“确定”以运行。

答案 10 :(得分:0)

在Netbeans 11(Gladle项目)中,请执行以下步骤:

在标签files>yourprojectname>中,双击文件"build.gladle",而不是在行"mainClassName:'yourpackagepath.YourMainClass'"中设置

希望这会有所帮助!