情况如下:
当前目录为./
有如此文件:
1.   ./test.java:
import ABC.*;
public class test {
public static void main(String argv[]){
a b = new a();
b.f();
}

2:   ./ABC/a.java:
package ABC;
public class a {
public void f(){
System.out.println("f");
}
}在./目录下运行命令:
javac test.java
javac -classpath  ./  test.java均出现:
test.java:4:cannot access a
bad class file: ./a.class
class file contains wrong class: a.a
Please remove or make sure it appears in the correct subdirectory of the classpath.
    a b = new a();
1 error
这样的错误在eclipseIDE下,
这样是没有错误的
所以我相信,是我的命令有问题。并且,假如把test.java 改成:
import ABC.a;
public class test {
public static void main(String argv[]){
a b = new a();
b.f();
}

则在命令行下也顺利通过编译
小弟不才,向各位请教到底是什么问题~

解决方案 »

  1.   

    因为./ABC/a.java未编译成class文件。
    把test.java和a.java放入同一目录下,
    然后执行javac -d . *.java
      

  2.   

    import ABC.*;public class test {
    public static void main(String[] args) {
    new a().f();
    }
    }
    package ABC;public class a { public void f(){ 
    System.out.println("f"); 

    }我大概也是照楼主的方式写的,编译命令如下:
    javac -cp ./ test.java编译运行成功。
      

  3.   

    和test.java 同层目录是否也有个a.java源文件呢?