2011-12-12 7 views
0

다른 클래스를 확장하는 클래스를 컴파일 할 때 3 개의 클래스 파일이 있습니다. 기호를 찾을 수없는 것처럼 컴파일 오류가 발생합니다.자바에서 심볼 오류를 찾을 수 없습니다.

public class Animal { 
    public static void hide() { 
     System.out.println("Hide Method Of Animal"); 
    } 

    public void override() { 
     System.out.println("The Override method of Animal"); 
    } 
} 

public class Cat extends Animal { 
    public static void hide() { 
     System.out.println("Hide Method Of Cat"); 
    } 

    public void override() { 
     System.out.println("The Override method of Animal"); 
    } 
} 

public class TestAnimal { 
    public static void main(String args[]) { 
     Cat myCat = new Cat(); 
     Animal myAnimal = (Animal)myCat; 
     myAnimal.hide(); 
     myAnimal.override(); 
    } 
} 

는이 오류 얻을 :

TestAnimal.java:6: cannot find symbol 
symbol : class Cat 
location: class com.Test.TestAnimal 
      Cat myCat = new Cat(); 
      ^ 

이에 어떤 도움을 ???

+1

다음과 같은 것이 있습니까 : package com.Test; 수업 시작에? – Kylar

+0

예 패키지를 추가 한 후에도 동일한 오류가 발생합니다. 그리고이 모든 클래스들은 같은 경로에 존재합니다. – user1081026

+0

패키지, 디렉토리 구조, 그리고'java' 어플리케이션을 호출하는 방법을 우리에게 보여줘야합니다. –

답변

4

예, 컴파일 한 후에 각 .java 파일에 .class 파일이 있는지 확인하십시오. 그렇지 않은 경우 각 파일에 .class 파일이 있는지 확인하십시오.

실행할 때 -classpath 인수를 사용하여 모든 .class 파일이있는 디렉토리를 가리 키십시오.

Java 컴파일 및 실행에 대한 지침이있는 것처럼 들릴 것입니다.

  1. 이동하여 D에 :

    http://www.horstmann.com/bigj/help/compiler/tutorial.html

    여기에 숟가락 먹이 대답 \ 내 \ CoreJava \ 프로그래밍 디렉토리 명령 쉘에서.

  2. 은 javac의 클래스 -cp 클래스 SRC/*. 당신은 한 번에 생성 된 모든 .class 파일을 볼 수
  3. 자바를 -d 입력하여 디렉토리/클래스
  4. 컴파일을 만듭니다.
  5. 는 자바 -cp을 입력하여 실행하십시오. 클래스를
+0

Animal 클래스는 오류없이 컴파일됩니다. Cat 클래스를 컴파일 할 때만 오류가 발생합니다. – user1081026

+0

오른쪽 - Cat은 Animal에 의존하지만 컴파일러는 찾지 못했기 때문에 찾을 방법이 없습니다. Animal.class 파일에 대해 알려주지 마십시오. 컴파일 할 때 -classpath 인수를 사용하십시오. – duffymo

4

코드 아무 문제가 전혀 없습니다 FullClassNameOfYourMain. 여기 제가 한 일이 있습니다. 모두 올바르게했는지 확인하십시오 :

$ cat > Animal.java 
public class Animal 
{ 
    public static void hide() 
    { 
    System.out.println("Hide Method Of Animal"); 
    } 

    public void override() 
    { 
    System.out.println("The Override method of Animal"); 
    } 
} 

$ cat > Cat.java 
public class Cat extends Animal 
{ 
    public static void hide() 
    { 
    System.out.println("Hide Method Of Cat"); 
    } 

    public void override() 
    { 
    System.out.println("The Override method of Animal"); 
    } 
} 

$ cat > TestAnimal.java 
public class TestAnimal 
{ 
    public static void main(String args[]) 
    { 
    Cat myCat = new Cat(); 
    Animal myAnimal = (Animal)myCat; 
    myAnimal.hide(); 
    myAnimal.override(); 
    } 
} 

$ javac TestAnimal.java 

$ ls 
Animal.class Animal.java Cat.class Cat.java TestAnimal.class TestAnimal.java 

$ java TestAnimal 
Hide Method Of Animal 
The Override method of Animal 

코드를 얻기 위해 복사 붙여 넣기를 사용했습니다. 컴파일 후에는 .java 파일 외에 3 개의 .class 파일이 있습니다.

관련 문제