在Java中找不到符号错误

时间:2011-12-12 13:30:45

标签: java compiler-errors

我有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();  
            ^  

对此有任何帮助???

2 个答案:

答案 0 :(得分:4)

是的,请在编译后查看每个.java文件是否有.class文件。如果没有,请确保每个文件都有.class文件。

运行时,使用-classpath参数指向所有.class文件所在的目录。

你听起来好像可以在编译和运行Java时使用一些指令。

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

这是勺子喂食答案:

  1. 转到命令中的d:\ Mine \ CoreJava \ Programming目录 壳。
  2. 创建目录/类
  3. 通过输入javac -d classes -cp classes src / * .java
  4. 进行编译
  5. 您应该会立即看到所有.class文件。
  6. 通过键入java -cp .;类FullClassNameOfYourMain
  7. 运行

答案 1 :(得分:4)

您的代码绝对没有问题。这就是我所做的。看看你是否做得对:

$ 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

我可以看到,我使用了复制粘贴来获取代码。请注意,在编译之后,除了.class文件外,还有三个.java个文件。