当前位置: 首页 > 面试题库 >

我们可以在没有main()方法的情况下执行Java程序吗?

仰翔
2023-03-14
问题内容

据我所知,没有主方法就无法执行,因为运行Java程序时。Java虚拟机将查找main方法。如果JVM无法找到main方法,它将显示运行时错误。线程main中的异常找不到main类。

但是我搜索了许多博客,其中一些人说,是的,如果Java程序中有静态块,则可以通过静态博客来完成,类加载器会在Java调用main()方法之前加载所有静态块!

真的有可能吗?它们的可用性如何?


问题答案:

现在不

在Java 7之前:

是的,顺序如下:

  • jvm加载类
  • 执行静态块
  • 寻找主方法并调用它

因此,如果在静态块中有代码,它将被执行。但是这样做是没有意义的。

如何测试:

public final class Test {
    static {
        System.out.println("FOO");
    }
}

然后,如果您尝试运行该类(使用java TestIDE或通过IDE的形式命令行),则结果为:

FOO
java.lang.NoSuchMethodError:主要



 类似资料:
  • 为什么main()只能用字符串类型参数调用?不能不带任何参数调用main()。

  • 问题内容: 有人建议可以怎一个JAVA程序运行不写一个主要方法.. 例如: 不使用类中的公共静态void main(String arg []),如何在控制台上打印以上行。 问题答案: 直到JDK6,您都可以使用静态初始化程序块来打印消息。这样,一旦您的班级被加载,消息就会被打印出来。然后,技巧就变成了使用另一个程序来加载您的类。 当然,您可以按如下方式运行程序,您将看到消息;但是,该命令也会失败

  • 问题内容: 我们可以重载Java中的方法吗? 问题答案: 您 可以 重载该方法,但仅在JVM启动您的类时使用。例如: 从命令行运行时,即使指定一个或两个命令行参数,该命令也 始终会 打印。 当然,您可以从代码中自己调用该方法-此时将应用常规的重载规则。 编辑:请注意,您可以使用varargs签名,因为从JVM的角度来看,这是等效的:

  • 我有一个从maven项目构建的jar文件。在它的pom,我有Spring靴和防波堤。我的项目的目的是在我的网站上实现web套接字。Jetty的web套接字实现不包含一个主方法,只包含一个类,这样它就知道当它收到web套接字请求时该怎么做。然后我尝试java-jar target/myproject-0.0.1-snapshot.jar,但我得到错误“no main manifest attribu

  • 问题内容: 这是使用awt包的Java图形的初学者问题。我在网上找到了这段代码来绘制一些简单的图形。 在main方法中,在画布上没有调用paint()。但是我运行了该程序并且它可以工作,那么paint()方法如何运行? 问题答案: 该方法由事件调度线程(EDT)调用,并且基本上不受您的控制。 它的工作方式如下:当 实现 用户界面(以您的情况为例)时,Swing将启动EDT。然后,此EDT线程在后台

  • 问题内容: 我想构建一个PHP脚本来验证SQL查询,但不执行它。它不仅应验证语法,而且还应在可能的情况下让您知道是否可以通过查询中的命令来执行查询。这是我想要执行的操作的伪代码: 这样的事情。我希望它模拟查询而不执行它。那就是我想要的,对此我什么也找不到。 为什么我们不希望执行查询的一个示例是,如果查询向数据库中添加了一些内容。我们只希望它在不修改数据库的情况下对其进行仿真。 任何链接或示例将不胜