java:自动查找带有main方法的类

时间:2012-01-15 15:03:16

标签: java javac

有没有办法告诉jvm自动查找带有main方法的类,而不是在调用java ClassWithMainMethod时指定它?

换句话说,我有一个包含许多已编译类的目录,其中一个有main方法,我只想指定该目录。

4 个答案:

答案 0 :(得分:5)

不,没有办法做到这一点。您可以创建一个可执行jar,并定义jar清单中的主类,允许您使用

java -jar MyJar.jar

虽然。

请参阅http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html

您也可以使用脚本为您的应用程序提供执行相应命令的脚本:

#startup.cmd
java -cp ... com.foo.bar.Main

答案 1 :(得分:5)

如果在你的情景中:

  • 可以在目录中执行第一个类文件;
  • 此目录中的类位于默认包中;
  • javap命令可用 - 即您安装了JDK,而不仅仅是JRE;

您可以使用以下bash脚本:

#!/usr/bin/env sh
for classfile in *.class; do
    classname=$(echo $classfile | cut -f 1 -d '.')
    echo $classname
    if javap -public $classname | fgrep 'public static void main(java.lang.String[])'; then
        java $classname "$@"
    fi
done

答案 2 :(得分:0)

如果您的应用程序位于.jar文件中,则可以在其清单

中指定主类

答案 3 :(得分:0)

如果主方法有多个类?

我认为您可以创建一个可执行的Jar文件,并在清单文件中指定具有main功能的类。因此,每当用户运行jar文件时。将执行具有主要功能的类。