父类:
package zp.brooks;public class A{ private int i; public A(){
} public A (int i){
}}子类:
package zp.brooks;public class B extends A{ private int b; public static void main (String[] args)
{
System.out.println("I am the child");
}}我先编译的class A,然后编译class B时遇到问题,提示错误如下:
B.java:3: 找不到符号
符号: 类 A
public class B extends A{
                       ^
1 错误注:如果不打包的话,编译正常通过,且可以运行。我一直没找到问题到底在哪,希望大家能帮我解答一下。

解决方案 »

  1.   

    package,是文件夹D:\zp\brooks\A.java
    D:\zp\brooks\B.javaD:\zp\brooks>javac A.java
    D:\zp\brokks>javac B.javaD:>java zp.brooks.B
      

  2.   

    打包的class,编译后,必须把.class文件放在一个跟packagename对应的相对路径之下。然后把\zp这个目录所在的父路径设置为classpath。
      

  3.   

    最后一句的运行位置错了吧
    打包以后的位置是
    d:\zp\brooks\zp\brooks\A.class
    d:\zp\brooks\zp\brooks\B.class
    这个时候你在d:java zp.brooks.B当然找不到A了
    你应该去d:\zp\brooks\这个位置做zp.brooks.B动作才能正确执行
      

  4.   

    同意internet2006yn()的,我昨天就是这么回事
      

  5.   

    谢谢大家,我又试了一下,好像是classpath的问题,我将整个D盘设为classpath就没有问题了。
      

  6.   

    因为我是在D:\tools下保存的这两个文件,编译的时候打的是javac -d d:\ Father.java 和 javac -d d:\ Child.java把classpath设为整个D disk 就编译通过了且正确运行。感谢大家!!
      

  7.   

    有两种方法可以解决:
    1:带参数-d .编译 具体:
        为了简单,将文件A.java B.java放在d盘根目录下
        
        然后在d盘根目录下输入如下命令 javac -d . A.java
                                      javac -d . B.java
    2:和lz的做法差不多 首先将A.java B.java放在包路径下 d:\zp\brooks\A.java d:\zp\brooks\Brooks.java    然后在d盘根目录下输入如下命令:
        javac zp\brooks\A.java
        javac zp\brooks\B.java
    我试过了应当没有问题 如果有问题说一下
      

  8.   

    有问题啊,不明白
    设了classpath也不行
    不明白
    我在命令提示符下编译A的时候就没有自动建文件夹zp\brooks
    不知道为什么
      

  9.   

    使用带参数-d .编译 具体方法是:
        在文件A.java B.java目录下输入如下命令 javac -d . A.java
                                              javac -d . B.java
    或者是javac -d . *.java
    也是可以的.
      

  10.   


    西南地区~44701938~JAVA爱好者和初学者学习交流的群,欢迎大家来加入!~
      

  11.   

    各位,我好像找到问题的所在就是javac编译时必须要用javac -d ...来进行编译,不然就会报错