import p.*寻找p这个包,但是你没有这个目录。也就是包不存在,当然找不到任何class.
import p.A寻找的是A这个class并判断A是否属于p即可。p目录的存在与否不关心。

解决方案 »

  1.   

    楼上的正解,你如果建立一个P的文件夹,再把A这个Class放到P文件夹中就可以用p.*了
      

  2.   

    谢谢2 位,但是我是有p这个文件夹的。
    注意到我是用命令行java -d . A.java 来编译的,-d表明会生成p文件夹,而且,也确实生成了。
    你们有没有试过?因为这个问题确实奇怪。
      

  3.   

    如果包中有JAVA源文件就可用import p.* .试一下.
      

  4.   

    如果你p这个文件夹只有一个.class文件,用import p.*是找不到这个文件的,只有两个以上的文件才能有.*,不然就必须写完整的类名
      

  5.   

    这的确是个比较深入的问题。
    你要把A.java文件移动到p下面,或者删除。因为import时,JVM会去classpath找import文件的源文件,如果找到就重新编译一次。
    如果源文件路径不对那就错了。请同行指教
      

  6.   

    我找了半天,终于找到原因了,虽然这个原因比较奇怪。
    因为当前目录里有个文件 A.java
    如果你用 javac 不加 -d 的话,会出更明显的提示
    C:\m>javac Test.java
    Test.java:5: cannot access A
    bad class file: C:\m\A.java
    file does not contain class A
    Please remove or make sure it appears in the correct subdirectory of the classpa
    th.
          A i=new A();
          ^
    1 error
    只要 delete A.java 或把它放在别的地方,就可以了。另外:
    回复人: bobfallen(逐流) ( ) 信誉:100  2004-04-09 11:01:00  得分:0 
     
     
      如果你p这个文件夹只有一个.class文件,用import p.*是找不到这个文件的,只有两个以上的文件才能有.*,不然就必须写完整的类名
     
     
    这个说法是不对的,一个文件用 * 也没有问题,这位老兄的 5 个三角是怎么弄来的?说话之前先试一试好不好?
      

  7.   

    sorry,实在不好意思,我没有仔细看回复
    回复人: scjpor(scjpor) ( ) 信誉:100  2004-04-09 21:29:00  得分:0 
     
     
      这的确是个比较深入的问题。
    你要把A.java文件移动到p下面,或者删除。因为import时,JVM会去classpath找import文件的源文件,如果找到就重新编译一次。
    如果源文件路径不对那就错了。请同行指教
     
     
    scjpor 已经说得非常明白了,我只是发现需要删除或把它放在别的地方,没明白原因。还是 scjpor 兄说得详细。
    楼主请不要把分结给我。
    厉害 scjpor