0

コマンドラインからJavaを実行する方法を学んでいますが、同じ問題が発生し続けています。main()私が実行しているメソッドは にありますbin/edu/cuny/util/ConvertTestVectors.class

ディレクトリを に設定しましたbin/cuny/。実行すると、次のよう> java -cp . ConvertTestVectorsになります。

Error: Could not find or load main class ConvertTestVectors

実行すると、次のよう> java -cp . util/ConvertTestVectorsになります。

Exception in thread "main" java.lang.NoClassDefFoundError: util/ConvertTestVectors (wrong name: edu/cuny/util/ConvertTestVectors)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        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:480)

誰かが私を正しい方向に向けることができますか? ありがとう!

4

2 に答える 2

2

一部の Java クラスのメソッドを実行するmainには、コマンド ラインでこのクラスの完全修飾名を指定する必要があります。たとえば、ソースに次がある場合:

package edu.cuny.util;

class ConvertTestVectors {
    ...
    public static void main(String [] args) {
        ...
    }
    ...
}

次に、このmainメソッドを実行するには、使用する必要があります

java edu.cuny.util.ConvertTestVectors

パッケージ名が異なる場合は、それに応じてコマンド ラインでクラス名を変更する必要があります。

また、CLASSPATHJava がクラスを検索する場所を決定する変数もあります。これには、Java パッケージのルートが配置されているディレクトリが含まれている必要があります (親ディレクトリはedu前の例の場合です)。含まれている場合は.、ディレクトリをそのルート ディレクトリに変更し、java コマンドを実行するだけです。

完全修飾クラス名の各部分はドット ( ) で区切られているため、クラス名にスラッシュ ( ) を.使用しないでください。/

于 2013-01-06T20:19:08.053 に答える
1

cd bin/edu/cuny && java util.ConvertTestVectors

完全なパッケージ名を使用する必要があります。

于 2013-01-06T20:00:25.763 に答える