有没有办法告诉jvm自动查找带有main
方法的类,而不是在调用java ClassWithMainMethod
时指定它?
换句话说,我有一个包含许多已编译类的目录,其中一个有main
方法,我只想指定该目录。
答案 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文件时。将执行具有主要功能的类。