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

我在同一个包中有2个类。 这两个类都有主要方法。 现在我想构建一个jar文件。 我想构建2个使用不同主要function作为默认主要的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摇滚!

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

 Main-Class : A 

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

关于如何在Netbeans中执行此操作,您可以看一下: 在NetBeans中生成可执行jar

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

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

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

 java my.jar class1 java my.jar class2 

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

 java -classpath my.jar class1 

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

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

有一些方法可以使用JAR命令行参数将备用命名文件指定为JAR的清单。

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

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

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

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

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

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

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

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

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

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