いくつかのJavaソースを調べていたところ、main
メソッドが定義されていないことに気づきました。
Javaどこから始めればよいかわからないまま、ソースコードをコンパイルするにはどうすればよいですか?
main
メソッドは、Java仮想マシンがコードを実行している場合にのみ使用されます。コードはmain
メソッドなしでは実行できませんが、コンパイルは可能です。
コードをコンパイルするときは、通常、コマンドラインでファイルのセットを指定します。
javac MyClass1.Java MyClass2.Java
Javaコンパイラ(javac
)は、渡された各クラスを調べて、それを.classファイルにコンパイルします。
Javaソースコードにmain
メソッドがない可能性がある理由の1つは、実行されるのではなく、ライブラリとして使用されるように設計されているためです。
あなたが面白いと思うかもしれない何か:Javaコンパイラによってコンパイルされたソースコードはmain
メソッドを必要としませんが、 Javaコンパイラ自体 にはmain
メソッドがあります。
実行とコンパイルには違いがあります。 Javaコードはインクリメンタルにコンパイルできます。必要なのはmain
のどこかでrunコードです。Java "コンパイラは、コンパイル時にすべての依存関係を調整できるほど賢いので、どこから始めればよいかを知っています。
実際、ある種の標準コンテナでWebアプリケーションを構築している場合、コードにはおそらくmain
メソッドがありません。コンテナはそうしますが、プラグインするコンポーネントを書くだけです。
//でのみ動作しますJava 1.6以下のバージョン
public class Test{
// this is static block
static{
System.out.println("This is static block");
}
}
In Java(実行中):
どのようにJava
コンパイルどこから始めればよいかわからずにソースを実行しますか?
コンパイルするのにmain()は必要ないので、(コンパイルではなく)実行するつもりだったと思います。この場合、明示的に宣言されたmain()メソッドは、プログラムを実行する方法の1つにすぎません。いくつかのフレームワークを使用してコードを実行できます。 main()(コンソールアプリケーションについてのみ説明)があり、エントリポイントのみを宣言する必要があります。これは、たとえば、単体テストを実行する方法です。
Mainメソッドなしでプログラムをコンパイルできます。実際にプログラムを実行することは、プログラムをコンパイルすることとは異なります。ほとんどのライブラリには、mainメソッドが含まれていません。したがって、コンパイルの場合、プログラムにmainメソッドが含まれているかどうかは問題ありません。
はい、メインメソッドなしでJavaプログラムを実行できます。このため、静的関数を使用します
コードは次のとおりです。
class Vishal
{
static
{
System.out.println("Hi look program is running without main() method");
}
}
これは出力します"Hi lookプログラムはmain()メソッドなしで実行されています"
これはエラーなしで、main()メソッドなしで実行されます
abstract class hello extends javafx.application.Application
{
static
{
System.out.println("without main method");
System.exit(0);
}
}
package com.test;
public class Test {
static {
System.out.println("HOLAAAA");
System.exit(1);
}
}
//by coco
//Command line:
//Java -Djava.security.manager=com.test.Test
方法の1つは静的ブロックですが、以前のバージョンのJDKではJDK1.7にはありません。
class A3{
static{
System.out.println("static block is invoked");
System.exit(0);
}
}
あなたが書いたすべてのJavaクラスは、実行するためのエントリポイントになることを意図していません。それが理由です。それが例外ではなくルールだと思います。
_public class Test{
// this is static block
static{
System.out.println("This is static block");
System.exit(0);
}
}
_
これは、JDKバージョン1.6以前で正常に実行されます。バージョン1.7以降では、main()
関数を含める必要があります。