在当前目录test下有两个.java文件,如下
package abc;
public class One{
}import abc.*;
public class TestPublicClass 
{
public static void main(String[] args)
{
System.out.println("test non-public class:One.class");
new One();
}
}
其中,class One在abc包中,而TestPublicClass不在包中,先用javac -d . One.java编译没问题,生成abc子目录和One.class,但再编译javac TestPublicClass时就会报错:
TestPublicClass.java:7: cannot access One
bad class file: .\One.java
file does not contain class One
Please remove or make sure it appears in the correct subdirectory of the classpa
th.
                new One();
                    ^
1 error
如果将当前test目录下的One.java移除后,编译就通过,我怎么也不明白是什么原因,望大家指教

解决方案 »

  1.   


     你也用javac -d . TestPublicClass编译看看啊!可能是这个原因.因为以前遇到过.
      

  2.   

    new One(); ==> One tmp = new One();
      

  3.   

    把import abc.*;改为import abc.One;
      

  4.   

    谢谢楼上的,改为import abc.One;就没问题了,但是import abc.*;问什么不对啊?
      

  5.   

    这个问题好多人都问过了,为什么不能用*,是因为这是你自己写的类,环境变量中没有你当前文件的路径,
    相信你配置过JDK的环境变量吧(5.0的不用配置),你肯定加过classpath=...之类的,所以象
    import java.awt.*;就没问题了
      

  6.   

    用eclipse就可以,import abc.*也行,看来以后不能用记事本了
      

  7.   

    eclipse会自动将你的文件夹设置为默认路径,但只是临时的,退出eclipes后又恢复了
      

  8.   

    编译路径问题。-d.  指明了是相对当前路径的。。就回从当前路径寻找要编译的类。IDE就是把这些细节屏蔽了。对于初学者不好。