※ ChatGPTを利用し、要約された質問です(原文:メインメソッド無しでJavaを実行する方法)
メインメソッド無しでJavaを実行する方法
このQ&Aのポイント
メインメソッドが必須とされているが、実際には無くてもJavaを動かす裏ワザが存在する。
staticイニシャライザーを使用することで、メインメソッドが無くてもJavaを実行することができる。
ただし、古いバージョンのJavaでのみ動作し、現在のバージョンではメインメソッドが必須となっている可能性がある。
Javaにメインメソッドってあるじゃん。public static void main(string[] args){;}でお馴染みのアレです。
Javaを実行するには、javaコマンドの引数に.classファイルのファイル名を指定するよね。んで、その.classファイルにメインメソッドを含んでいる必要があって、Javaを実行するにはメインメソッドが必須だそうです。このように、参考書やWEBなどあちこちに書いてあります。
しかし、メインメソッド必須というのは、厳密には間違いなんだそうです。メインメソッドが無くてもJavaを動かす裏ワザがあると、↓のブログに書いてありました。(基本はメインメソッドだとは思うのですが)
http://blogs.wankuma.com/kacchan6/archive/2007/07/24/86663.aspx
ここにプログラムがザックリ書いてあったのですが、本当に動くんですか?
public class MimeticMain{
static boolean init = caller();
public static boolean caller(){
System.out.println("main()が無くても動く");
return true;
}
}
--
これを動かすと、「main()が無くても動く」と表示するんですかね。私がやると、エラーになっちゃったのですが。
エラー: メイン・メソッドがクラスMimeticMainで見つかりません。次のようにメイン・メソッドを定義してください。
public static void main(String[] args)
ーー
あと、staticイニシャライザーを使うと、メインメソッドが無くても動くと、冒頭に書いてあります。自分なりに調べて書いてみたんですが、エラーですね。
public class MimeticMain{
public static void mMain(){System.out.println("main()が無くても動く");}
static{mMain();}
}
メインメソッドが無くても動くって、本当?そのコードを書けますか?10行50ワード以下の簡単なプログラムで良いと思いますが。
2007年のブログらしく、当時の古いバージョンのJavaならば動くのかしら?Javaも仕様がどんどん変わっていて、バージョンアップするとメインメソッド必須になったのかしら?
お礼
さんきゅー