一直以来自认为  import导入的是.class文件.前几天作了个实验但怎么试导入都不成功。后来作了测试发现很奇怪的问题。
废话不多说了,进入正题:
     首先我作了一个类
   // Testpc.java 为了写的方便用1代替,咱打字很慢啊。 
package xuhe;
public class Testpc{
public Testpc(){
System.out.println("sdfsadf");
}
} 再建立一个测试
//Test.java 2代替
import xuhe.*;
class Test{
public static void main(String[] args)
{
Testpc pc=new Testpc();
}
}
编译1,把1的.class 放入xuhe文件夹里;
编译2,时错误
Test.java:5: 无法访问 Testpc
错误的类文件: .\Testpc.java
文件不包含类 Testpc
请删除该文件或确保该文件位于正确的类路径子目录中。
Testpc pc=new Testpc();
^
1 错误

把1放入xuhe里,正常通过。
看来这里是调用了.java文件。接下来  把2中的
import xuhe.*;改为import xuhe.Testpc;
再把1改到原来位置
编译  正常通过(这里调用的是.class)这是怎么回事呢?  大家发表下自己意见。

解决方案 »

  1.   

    你用eclipse就不会出现这样的问题吧。
      

  2.   

    你在第一种情况下是不是把Testpc.java放到了xuhe相同的目录中了
      

  3.   

    你在第一种情况下是不是把Testpc.java放到了xuhe相同的目录中了??
      

  4.   

    应该是优先级的原因.
     它应该是先找.java文件,然后.class文件,
    你把.java文件删除的话就不会出错.
    只是猜测,不敢确定.
    期待高手.
      

  5.   

    问题补充  在第一中情况下,两个java文件都在xuhe的上一层目录。
      

  6.   

    http://topic.csdn.net/u/20090422/19/59c26eb0-a8f0-4a02-bb3e-0b0d19102e01.html
      

  7.   

    对于带有包的编译建议使用 javac -d . Testpc.java             //自动将编译后的class文件放置到生成目录中,调用时候不需要java文件
      

  8.   

    你为什么要编译他呢,Test来对Testpc实例化,自动就对Testpc类进行编译,产生.class文件。我按你说的方法没有出现你的错误。
    import xuhe.*;是引了xuhe包下的所有类
    import xuhe.Testpc ; 引了xuhe包下的Testpc类
    它俩没有错误,看你怎么引了。
    你没有要编译main()的时候,请把Testpc类里输出的值改下。我测试的两个类:
    package t;
    //package xuhe.*;
    //import xuhe.*; 
    import xuhe.Testpc; 
    class Test{ 
    public static void main(String[] args) 

    Testpc pc=new Testpc(); 


    package xuhe;public class Testpc{ 
    public Testpc(){ 
    System.out.println("sdfsadf11111111111"); 

      

  9.   

    bin 放class  
    src 放java
      

  10.   

    我真想说IDE害死人
    在第一种情况下当然可以导入。在xuhe的上级目录下(Testpc.java不能在与xuhe同级,原因是因为Testpc包名就是xuhe,同级会出错,虽然你不编绎它,但它在搜索路径上的当前目录,优先级要比class要高,编绎器会优先编绎),
    目录结构这样
    test-
        |
        xuhe--
             |
             --Test.java,Testpc.class
    javac -verbose -classpath xuhe.Testpc; xuhe\Test.java我把解析顺序写下来
    [解析开始时间 xuhe\Test.java]
    [解析已完成时间 62ms]
    [源文件的搜索路径: [.]]
    [类文件的搜索路径: [C:\Program Files\Java\jdk1.5.0_17\jre\lib\rt.jar, C:\Progra
    m Files\Java\jdk1.5.0_17\jre\lib\jsse.jar, C:\Program Files\Java\jdk1.5.0_17\jre
    \lib\jce.jar, C:\Program Files\Java\jdk1.5.0_17\jre\lib\charsets.jar, C:\Program
     Files\Java\jdk1.5.0_17\jre\lib\ext\dnsns.jar, C:\Program Files\Java\jdk1.5.0_17
    \jre\lib\ext\localedata.jar, C:\Program Files\Java\jdk1.5.0_17\jre\lib\ext\sunjc
    e_provider.jar, C:\Program Files\Java\jdk1.5.0_17\jre\lib\ext\sunpkcs11.jar, .]][正在装入 C:\Program Files\Java\jdk1.5.0_17\jre\lib\rt.jar(java/lang/Object.clas
    s)]
    [正在装入 C:\Program Files\Java\jdk1.5.0_17\jre\lib\rt.jar(java/lang/String.clas
    s)]
    [正在检查 Test]
    [正在装入 .\xuhe\Testpc.class]
    [已写入 xuhe\Test.class]
    [总时间 500ms]
      

  11.   

    呵呵,搞不懂,我就只晓得用import可以引入系统的包,自己还没有建过包!
      

  12.   

    .java优先级高于.class吗??以前没考虑过导入问题。
    看来我要多学习了。。呵呵~
      

  13.   

    使用import导入的就是.class文件,你可以自己建一个工程然后打包成.jar文件,然后在别的功能里面用,使用import就可以,这大家都知道,
    但是你说的那个问题不是 import引起的是路径引起的.你去了解下 classpath 就知道为什么了.