一直以来自认为 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)这是怎么回事呢? 大家发表下自己意见。
废话不多说了,进入正题:
首先我作了一个类
// 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)这是怎么回事呢? 大家发表下自己意见。
它应该是先找.java文件,然后.class文件,
你把.java文件删除的话就不会出错.
只是猜测,不敢确定.
期待高手.
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");
}
}
src 放java
在第一种情况下当然可以导入。在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]
看来我要多学习了。。呵呵~
但是你说的那个问题不是 import引起的是路径引起的.你去了解下 classpath 就知道为什么了.