例一:
package my;
public class A {
}import my.*;
public class B extends A{
}
例二:
package my;
public class A {
}import my.A;
public class B extends A {
}
例三:
package my;
public class A {
}package my2;
import my.*;
public class B extends A {
}在classpath设置正确的情况下用javac编译,后两个可以通过编译,第一个不能通过编译
不知这是什么原因?

解决方案 »

  1.   

    可能是你的A.java存在在当前目录下
    你删掉试一下
      

  2.   

    .java:2: cannot access A
    bad class file: C:\a\A.java
    file does not contain class A
    Please remove or make sure it appears in the correct subdirectory of the classpath.
    public class B extends A{
                           ^
    是这个错吧
    删掉A.java就可以,具体原因不清楚,还要找源文件
      

  3.   

    javac -d . A.java         //把文件放在当前目录下
      

  4.   

    第一种方法中,如果这样:javac -d . A.java 你可以看到当前目录下多了一个my目录,my目录下有一个A.class文件如果这样:javac A.java 你看不到my目录,A.class文件就直接放在了当前目录下;
      

  5.   

    楼主,我想看看你的classpath设置,我想参考一下……
      

  6.   

    按包存放源文件~~!!
    .\\my\\A.java
    .\\B.java然后再进行编译
      

  7.   

    classpath 没有任何问题 我也是用javac -d . a.java 编译的但b.java是不能通过编译的但按  tom2005(快乐着) 的做法b.java 可以通过编译,我也查过很多资料了但就是没找到原因
    为什么在不删除a.java的时候b.java不能编译如果有人知道原因请告知 ,非常感谢!!!
      

  8.   

    不管如何
    在import my.*的情况下,
    A.java和A.class都不能与b.class在同一各目录下,否则会错误,可能与java编译器的编译算法有关如过将A.java或者A.class放在my2目录下,第三种情况依然不能编译,并且错误是一样的估计是在没指明import哪个class情况下,编译器先在b.class下寻找A.class
    结果发现了A.java,然后怎么就认为A.class也在同一目录下,从而导致了错误
      

  9.   

    看到你在CHINAJAVAWORLD也发了同样的贴子:)http://community.csdn.net/Expert/topic/3453/3453703.xml?temp=.8943903
      

  10.   

    用javac是可以编译的,不过不是很好。