0

次の簡単なコードがあります

public class Tester {
    static class TesterChild {
        public static void main(String args[]) {
            System.out.println("Test");
        }
    }
}

それはうまくコンパイルされます。しかし、実行すると次のエラーが発生します

[aniket@localhost src]$ java Tester
Error: Could not find or load main class Tester

質問は、静的内部クラスでメイン メソッドを定義できないのはなぜですか?

Update1 :

回答/コメントで指定されているように、コードを次のように変更しました

public class Tester {
    public static class TesterChild {
        public static void main(String args[]) {
            System.out.println("Test");
        }
    }
}

コンパイルしたところ、2 つのクラス ファイルTester.classTester$TesterChild.class. しかし、それでもエラーが発生します

[aniket@localhost Desktop]$ java Tester$TesterChild
Error: Could not find or load main class Test

更新 2:

さて、現在のディレクトリをクラスパスに含めて実行しましたが、まだエラーが発生しています

[aniket@localhost Desktop]$ java -cp . Tester$TesterChild
Error: Main method not found in class Tester, please define the main method as:
   public static void main(String[] args
4

3 に答える 3

4

として実行できmainますが、適切なクラスを使用していません。あなたのメインクラスはTesterbutではありませんTester.TesterChild

Eclipse ではセットアップなしで実行できますが、コマンド ラインからはjava 'yourpackage.Tester$TesterChild'上記の他の構文を使用する必要があります。

''linux/unix では、シェルがそれを変数と見なす可能性があるため、クラスの名前を s でラップする必要があり$TesterChildます。''プロンプトで試してみると、 sを省略すると次のようになります。

エラー: メイン クラス Tester が見つからないか、読み込めませんでした

クラスパスを明示的に設定する必要がある場合は、-cpまたは-classpathオプションを使用するか、コマンドラインから設定できます。set CLASSPATH=/somedir

于 2013-08-26T09:32:30.950 に答える
1

main()内部クラスでメソッドを定義しているため。
内部クラスを実行して、main()実行されるようにします。

コマンドラインを使用しますjava Tester$TesterChild
更新
Javaファイルをいくつかのパッケージに配置していると思います。その場合は、このコマンドラインを使用してください。

java -cp . yourPackageName.Tester$TesterChild
たとえば、ファイルをという名前のパッケージに配置しました。次にtest、コマンドは次のようになります

java -cp . test.Tester$TesterChild

于 2013-08-26T09:32:38.453 に答える