1. ホーム
  2. java

[解決済み] main()メソッドなしでjavaプログラムを実行することは可能ですか?重複

2022-03-07 02:39:02

質問

私の知識によると、我々は、Javaプログラムを実行するときに、メインメソッドなしで実行することはできません。Java仮想マシンは、メインメソッドを探す.JVMが見つからない場合は、実行時エラースレッドの例外が表示されますメインクラスが見つかりませんでした。

しかし、私は多くのブログを検索し、それらのいくつかは、はい、それはJavaプログラム内の静的ブロックがある場合、クラスローダは、Javaがmain()メソッドの呼び出しを与える前にすべての静的ブロックをロードする静的ブログを介して行うことができますと言っています!しかし、私はそれを行うことができるようにするために、そのような静的なブログで検索している。

本当に可能なのか、使い勝手はどうなのか。

どのように解決するのか?

今すぐ - いいえ


Java 7以前。

はい、順序は以下の通りです。

  • jvmがクラスをロード
  • スタティックブロックの実行
  • mainメソッドを探し、呼び出す

つまり、スタティックブロックの中にコードがあれば、それが実行されるわけです。でも、そんなことをしても意味がない。

それをどうテストするか。

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

そして、このクラスを実行しようとすると(コマンドラインから java Test またはIDEで)その結果は

FOO
java.lang.NoSuchMethodError: メイン