2012-12-10 53 views
0

我瞎搞使用类路径等,并有东西,我完全不明白......为什么指定的类路径找不到扩展类?

假设我们有一个目录结构两个文件如下:A

[current dir] 
| 
org 
| 
amigo 
| 
|---A.class 
|---B.java 

类:

package org.amigo; 
public class A {} 

B类:

package org.amigo; 
public class B extends A {} 

到目前为止克洪水......如今,在current dir是我们调用

javac org\amigo\B.java 

这编译该类就好了。接下来我们试试

javac -cp . org\amigo\B.java 

这也适用。但是...当我们尝试运行

javac -cp .:org org\amigo\B.java 

我们得到一个:

cannot find symbol 
symbol: class A 
public class B extends A { 
        ^
1 error 

Soooooo ....我的问题是 - 如何走到这一步不工作?

(当然,我们可以用-cp .:[any dir]取代-cp .:org,仍然得到同样的结果。)

据我了解(我知道吗?...... -_-)的-classpath选项,它只是让我们指定在其中目录搜索所需的类。因此,如果A.class出现在其中一个目录中,那么无论如何它都无法工作?我的意思是 - 只要-cp .选项工作!

回答

0

在Windows上,路径分隔符是';'。因此,不是说“查找和查找组织”,而是明确指出虚拟机应该查找类的路径是“。:org”,它不存在。但同时禁止VM查看当前目录,因此它找不到类。

+0

OMG,钉它:)谢谢 – aMiGo