Mein Programm unten genannt wird Apple.javaJava Classpath im Zusammenhang Abfrage mit Import statment
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);
}
}
Dies ist ein weiteres Programm namens Fruit.java ist
package food;
public abstract class Fruit{
public static void main(String[] args){
int x=10;
System.out.println("x is "+x);
}
}
Beide Programme in folgenden Verzeichnispfad gespeichert werden : - G: \ Java \ food Ich habe erfolgreich beide Programme mit dem folgenden Befehl kompiliert: -
und es erzeugte Klassendateien. Ich habe es geschaffen, das Obst Programm mit dem folgenden Befehl auszuführen: -
G:\>java -classpath G:\Java food.Fruit
Allerdings, wenn ich das gleiche für das Apple-Programm zu tun versucht, es zu Fehlermeldungen geführt.
Könnte mir bitte jemand helfen, herauszufinden, was der Fehler ist? Ich versuche, mich für das SCJP-CERT-Examen vorzubereiten, und daher verweise ich dieses Beispiel auf das McGrawHill-Buch von Kathy Sierra und Bert Bates.
Danke!
Edit # 2
Ja, ich habe denn das war, wie der Code in dem Buch war. Gibt es einen Weg, wie ich die Datei noch ausführen könnte, ohne die Package-Anweisung einbeziehen zu müssen. Diese
ist, was die Frage wie folgt aussieht: -
- Versuch, die beiden Dateien zu kompilieren. Wenn Sie die Apple-Klasse verwenden möchten, machen Sie sicher, dass Sie die Fruit.class-Datei in dem Essen-Unterverzeichnis platzieren.
Edit # 3
habe ich versucht, dass und bekam die folgenden Fehler
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.
Edit # 4
ich es schaffte auszuführen, ohne dass die Aussage enthalten Paket Essen;
G:\>java -classpath G:\Java\food;G:\Java Apple
x+y is 30
Was änderte ich war ich der Apple.class in einen separaten Ordner, die Sinn macht Datei verschoben, da der Ordner „Essen“ ist ein Hinweis auf der Verpackung und als Darvis wies alle Dateien im Ordner benötigt, um die Paketname andernfalls würde es nicht ausgeführt werden.
Edit # 5 Das funktionierte auch
G:\>java -classpath G:\Java Apple
x+y is 30
Haben Sie eine 'package food;' Anweisung in Ihrer Apple-Klasse? –
@SB: die Ausnahmebedingungsnachricht ist ein klarer Beweis. – BalusC
@BalusC - ha so ist es. –