package food;
public abstract class Fruit{
public static void main(String[] args){
int x=10;
System.out.println("x is "+x);
}
}
이 두 프로그램은 다음 디렉토리 경로에 저장됩니다 Fruit.java라는 다른 프로그램입니다
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);
}
}
Apple.java라고 내 프로그램 : - G : \ Java \ food 다음 명령을 사용하여 두 프로그램을 모두 성공적으로 컴파일했습니다. -
G:\>javac Java\food\*.java
그리고 클래스 파일을 생성했습니다. 나는 다음과 같은 명령을 사용하여 과일 프로그램을 실행하기 위해 관리 않았다 - 나는 애플 프로그램에 동일한 작업을 수행하려고 할 때
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 시험 준비를 위해 노력하고 있으며 따라서이 예를 캐시 시에라 (Cathy Sierra)와 버트 베이츠 (Bert Bates)가 쓴 McGrawHill 출판 책으로 다시 언급한다.
감사합니다. 그 코드가 책에 얼마나 때문에
편집 # 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
Apple 클래스에 'package food;'문이 있습니까? –
@SB : 예외 메시지는 분명한 증거입니다. – BalusC
@BalusC - 하 그래. –