根据我的知识,我们无法在没有main方法的情况下执行,因为在运行java程序时.java虚拟机寻找主要方法.如果JVM找不到它会显示运行时错误的主方法错误在主线程中无法找到主类.
但我搜索了很多博客,其中一些人说,是的,如果在java程序中有静态块,可以通过静态博客完成,类加载器在java调用main()方法之前加载所有静态块!
它真的有可能,这些可用性是什么.
有一个" 如何在没有主要方法的情况下启动应用程序 "的问题的历史,大多数陈述类似于" 你不能 "的东西.我注意到现在只需通过扩展即可启动JavaFX应用程序Application.我一直在使用类似的方法Application.launch(),但在这种情况下我总是将主要方法视为样板代码.所以我开始再次寻找答案.
我发现这个答案将我们与我们可以学习创建自己的JVM发射器的地方联系起来,但遗憾的是文章不再存在.我花了很长时间寻找任何可能暗示我应该做什么的事情,但没有结果.
我的问题
如何创建自定义JVM启动程序以根据正在扩展的内容启动应用程序?例如,想象一个具有1个声明类的项目:
class MyApplcation extends App {
}
Run Code Online (Sandbox Code Playgroud)
由于它扩展了App,因此无需启动项目的主要方法.这不是问题,尽管这是我的目标.问题是有人如何创建自定义JVM启动器?
我的猜测是它会涉及使用某种基础,给我们某种骨架,但我不知道在哪里可以找到这样的东西.
这是代码
public class Test {
public static void main(String[] args){
System.out.println("Hello");
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在Hello World不触及主要方法的情况下进行打印?
我尝试使用静态块但输出就像
World
Hello
Run Code Online (Sandbox Code Playgroud)
但我想要Hello World同样的路线.
我正在使用Eclipse.我正在尝试制作一个不包含main函数的程序,但仍会打印Hello, World:
public class Q
{
static
{
System.out.println("Hello World");
System.exit(0);
}
}
Run Code Online (Sandbox Code Playgroud)
但是这个程序并没有给我预期的结果.一个错误即将到来,说Q类没有找到主要方法.我在哪里犯了错误?