2

私はこれまで主にEclipseを使用してきました。ターミナルからJavaを実行しようとしていますが、パッケージに問題があります。

これは私のMain.javaファイルです:

package main;

class Main {
    public static void main(String[] args) {
        System.out.println("it's working");
    }
}

私はこれを使用してコンパイルしてjavac Main.javaから実行しjava Mainます。

java Main
Exception in thread "main" java.lang.NoClassDefFoundError: Main
Caused by: java.lang.ClassNotFoundException: Main
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: Main. Program will exit.

私が削除すると、package Mainすべてが正常に機能します。私は何が欠けていますか?

java -version与える:

java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
4

6 に答える 6

6

java コマンドを 1 つ上のディレクトリ レベルで実行し、完全修飾パッケージ名で指定する必要があります。java main.Main

これがどのように機能するかについては、Java ランチャーがユーザー クラスを検索する方法を参照してください。

于 2012-10-18T22:20:52.390 に答える
0

を追加する場合はpackage Main、ソース ファイルをフォルダ Main/Main.java に配置する必要があります。その後、コンパイルできます。プログラムを実行したら、「cd」を使用して Main フォルダーに移動し、java -cp Main.Main See my question similar to yours noclassdeffounderrorと書き込みます。

于 2012-10-19T03:47:14.323 に答える
0

次のコマンドを使用できます。

java main.Main

main(小文字の) パッケージ ディレクトリがクラスパス上にあることを確認します。

于 2012-10-18T22:18:15.953 に答える
0

クラスパスが正しく設定されていない可能性があります。.java ファイルにパッケージを指定したため、名前が付けられなくなりました。

例:

java -cp ./package1/ main.Main //from the current directory and 
                               //if main package is contained in package1

クラス名を完全修飾する必要があります。今後の参考のために、コマンド ラインから実行する場合は、パッケージ レベルで (適切な用語がないため) インダイレクションを停止する必要があります。あなたのクラスがpackage1.package2.Main.javaパッケージにあったとしましょう。 私はそれを次のように実行しますjava -cp /blah/blah package1.package2.Main

于 2012-10-18T22:19:07.003 に答える
0

コンパイル

Windows:
javac main\Main.java
Mac:
javac main/Main.java

走る

java main.Main

于 2012-10-19T02:31:11.467 に答える
0

これを試して...

window では、コードを次のようにコンパイルするだけです

javac-d . Main.java

次に、クラスで指定した名前のパッケージ(フォルダー)が、プログラムが存在する同じパスに作成されます(コードでは、「main」という名前のパッケージが作成されます)...

次に、プログラムを java main.Main または java main/Main として実行します。

于 2012-10-19T10:54:00.140 に答える