私のプログラムはApple.javaJavaクラスパス
import food.Fruit;
class Apple extends Fruit{
public static void main(String[] args){
int y=20,z=0;
z=y+10;
System.out.println("x+y is "+z);
}
}
と呼ばれるこれはFruit.java
package food;
public abstract class Fruit{
public static void main(String[] args){
int x=10;
System.out.println("x is "+x);
}
}
と呼ばれる別のプログラムであり、いずれもこれらのプログラムは、次のディレクトリ・パスに格納されています: - G:\ Java \ food 次のコマンドを使用して、両方のプログラムを正常にコンパイルしました: -
であり、クラスファイルを生成しました。私は、次のコマンドを使用してフルーツのプログラムを実行するために管理しなかった : - 私はAppleのプログラムのために同じことをしようとしたとき
G:\>java -classpath G:\Java food.Fruit
はしかし、それはエラーメッセージが生じました。
G:\>java -classpath G:\Java food.Apple
Exception in thread "main" java.lang.NoClassDefFoundError: food/Apple (wrong name: Apple)
エラーが何であるか把握してもらえますか?私は自分自身をSCJPのcert試験の準備をしようとしているので、私はこの例をMcGrawHill出版の書籍、Kathy SierraとBert Batesによって書いています。
ありがとうございます!
編集#2
それは、コードが本の中であったかあったので、はい、私でした。パッケージ文をインクルードしなくてもファイルを実行できる方法はありますか? 2つのファイルをコンパイルする
- 試み - :
これは問題がどのように見えるかです。 Appleクラスを使用する場合は、 にFruit.classファイルをfoodサブディレクトリに配置してください。
編集#3
私はそれを試してみましたし、私はなくても、それを実行するために管理しなかった次のエラー
G:\>java -classpath G:\Java\food Apple
Exception in thread "main" java.lang.NoClassDefFoundError: food/Fruit
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Caused by: java.lang.ClassNotFoundException: food.Fruit
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 12 more
Could not find the main class: Apple. Program will exit.
編集#4
を得ましたステートメント パッケージ食品を含める;私は何が変わった
G:\>java -classpath G:\Java\food;G:\Java Apple
x+y is 30
は、私は、フォルダ「食品」は、パッケージの表示があるのでApple.classは理にかなって別のフォルダにファイルを移動し、Darvisとして持つために必要なフォルダ内のすべてのファイルを指摘しましたそれ以外のパッケージ名は実行されません。あなたはそのための食品のパッケージを指定していないので、
編集#5 これはあまりにも
G:\>java -classpath G:\Java Apple
x+y is 30
あなたのアップルクラスに 'package food;'ステートメントがありますか? –
@SB:例外メッセージは明確な証拠です。 – BalusC
@BalusC - haだからです。 –