メインメソッドを書かずにJAVAプログラムを実行する方法を誰かが提案できますか..
例:
System.out.println("Main not required to print this");
クラスでpublic static void main(String arg[])を使用せずに、上記の行をコンソールに出力するにはどうすればよいですか。
メインメソッドを書かずにJAVAプログラムを実行する方法を誰かが提案できますか..
例:
System.out.println("Main not required to print this");
クラスでpublic static void main(String arg[])を使用せずに、上記の行をコンソールに出力するにはどうすればよいですか。
Java 6までは、 main() メソッドを使用せずにコンソールにメッセージを印刷するという質問で指摘されているように、静的初期化ブロックを使用してこれを行うことができました。たとえば、次のコードを使用します。
public class Foo {
static {
System.out.println("Message");
System.exit(0);
}
}
はSystem.exit(0)
、JVM がメソッドを探す前にプログラムを終了させますmain
。そうしないと、次のエラーがスローされます。
スレッド「メイン」での例外 java.lang.NoSuchMethodError: メイン
ただし、Java 7では、これはもう機能しません。コンパイルしても、実行しようとすると次のエラーが表示されます。
プログラムは正常にコンパイルされましたが、メイン クラスが見つかりませんでした。メイン クラスには次のメソッドが含まれている必要があります: public static void main (String[] args)。
ここでの代替手段は、独自のランチャーを作成することです。この方法で、必要に応じてエントリ ポイントを定義できます。
記事JVM Launcherには、開始するために必要な情報が記載されています。
この記事では、Java 仮想マシン ランチャー (java.exe や javaw.exe など) を作成する方法について説明します。Java 仮想マシンが Java アプリケーションを起動する方法について説明します。使用している JDK または JRE に関するより多くのアイデアが得られます。このランチャーは、Java Native Interface を備えた Cygwin (Linux エミュレーター) で非常に便利です。この記事は、JNI の基本的な知識があることを前提としています。
JDK6 までは、静的初期化ブロックを使用してメッセージを出力できました。このようにして、クラスがロードされるとすぐにメッセージが出力されます。トリックは、別のプログラムを使用してクラスをロードすることになります。
public class Hello {
static {
System.out.println("Hello, World!");
}
}
もちろん、プログラムを asjava Hello
で実行すると、メッセージが表示されます。ただし、コマンドは失敗し、次のメッセージが表示されます。
スレッド「メイン」での例外 java.lang.NoSuchMethodError: メイン
[編集]System.exit(0)
他の人が指摘したように、メッセージを出力した直後に呼び出すだけで NoSuchmethodError を回避できます。
static
JDK6 以降では、初期化ブロックからのメッセージは表示されなくなりました。詳細はこちら。
public class X { static {
System.out.println("Main not required to print this");
System.exit(0);
}}
を使用してコマンドラインから実行しjava X
ます。
私が覚えているアプレットは main メソッドを必要としませんが、技術的にはプログラムであるかどうかはわかりません。