0

このコードを含むList.javaフォルダーにファイルを作成しましたUtilityPack

package Utilities;
public class List
{
    private class node{}
    public void insert(int data){}
    public void print(){}
    public static void main(String[] s){}
}

コンパイルするために私はやった

C:\UtilityPack>javac List.java

しかし、私が実行しようとすると

C:\UtilityPack>java -classpath . List

また

C:\UtilityPack>java List

エラーが発生します

Exception in thread "main" java.lang.NoClassDefFoundError: List (wrong name: Uti
lities/List)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

過去 3 時間からこのプログラムを実行しようとしましたが、何も機能しませんでした..助けてください

4

3 に答える 3

4

完全修飾名が必要です。

java -cp . Utilities.List

-cp .つまり、現在の direct( ) からクラスを探すように JVM に指示しています。Utilities.Listこれは、ファイル内で期待されますUtilities\List.class

より一貫性を持たせるには、Utilitiesディレクトリの下に .java ファイルを配置する必要があります (はい - これは同義語です - パッケージで指定されていますが、一貫した方法です)。

また、あなたのクラスを呼び出すことも避けますList。ある段階で a をインポートしようとするjava.util.Listと、すべてが非常に混乱するでしょう!

最後に、いくつかのクラスを取得したらすぐに、antまたは別のビルド ツールを調査し、ディレクトリsourcetargetディレクトリを分離します。

于 2013-01-08T17:51:02.383 に答える
0

ディレクトリ構造は、Java パッケージのパスに従う必要があります。IOW、クラスListがパッケージUtilitiesにある場合は、プロジェクトのルート レベルにある Utilities というディレクトリに配置する必要があります。つまり、ソース ファイルのパスはC:\UtilityPack\Utilities\List にする必要があります。ジャバC:\UtilityPack (プロジェクト ルート) にいる場合Listは、 として参照してコンパイルおよび実行しますUtilities.List

Eclipse の使用を検討することもできます。Eclipse を使用すると、このようなことが起こらなくなります。または、他の Java IDE を使用することもできます。

于 2013-01-08T17:55:45.727 に答える
0

クラスの完全な名前を使用して、プログラムを起動します。

 java Utilities.List

ただし、フォルダー名もパッケージ名と一致する必要があります。

于 2013-01-08T17:49:38.853 に答える