1

Eclipse でプログラムを作成し、コマンド ラインから実行しています。このプログラムの以前のバージョンでは、引数は必要なく、 として問題なく実行できました> java foo。それ以来、いくつかの引数を追加したので、それを として実行する必要があります> java foo file1.txt file2.txt。これを実行すると、java.lang.NoClassDefFoundError:エラーが発生します。クラスパスを含めても、つまり> java foo file1.txt file2.txt -cp .、まだ機能しません。

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

編集 ここに完全なスタックトレースがあります

Exception in thread "main" java.lang.NoClassDefFoundError: edu/cuny/pausePred/TemplateToCharTestVector (wrong name: edu/cuny/pausepred/TemplateToCharTestVector)
        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

3 に答える 3

1

Java を使用する初心者によくある間違いは、クラス名とクラスパスの誤解です。

クラス名は、パッケージを含む完全修飾名です。コンパイラでは、基本名を使用してクラスを参照できます。これは、プログラミングを正常に保つのに便利です。クラスの実際の名前は<package>.foo.

クラスパスには、使用しているすべてのパッケージのルートが含まれている必要があります。したがって、foo のパッケージが である場合、fooedu.cuny.pausePredのクラス名は でedu.cuny.pausePred.fooあり、クラスパスには、 を含むディレクトリではeduなく、を含むディレクトリを含める必要がありますfoo

コマンドラインは次のようになります。

jave -cp the-directory-root-for-java-sources foo file1.txt file2.txt

これは、2 つのデータ ファイルが現在のディレクトリにあることを前提としていることに注意してください。

余談ですが、クラスのベース名は先頭を大文字にする必要があることに注意してFooくださいfoo

于 2013-01-10T19:02:12.700 に答える
1
  • 完全なディレクトリ パスを記述し、すべてのクラスをコンパイルします。
  • 完全なディレクトリを書き込み、main() メソッドを含むクラスを実行します
于 2013-01-10T18:02:38.133 に答える
1
Exception in thread "main" java.lang.NoClassDefFoundError: 
  edu/cuny/pausePred/TemplateToCharTestVector 
  (wrong name: edu/cuny/pausepred/TemplateToCharTestVector)

Java のパスは大文字と小文字が区別されます。 pausepredと同じではありませんpausePred

于 2013-01-11T08:48:49.837 に答える