为什么指定的类路径找不到扩展类?

时间:2012-12-10 17:14:06

标签: java classpath javac cp

我正在乱搞类路径等等。而且还有一些我完全无法得到的东西......

假设我们在dir结构中有两个文件,如下所示:

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

A类:

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 .:org替换为-cp .:[any dir],但仍会得到相同的结果。)

据我所知(是吗?... -_-)-classpath选项,它只是让我们指定在哪个目录中搜索所需的类。因此,如果A.class存在于其中一个目录中,那么它是否仍然可行?我的意思是 - 只有-cp .选项有效!

1 个答案:

答案 0 :(得分:0)

在Windows上,路径分隔符为“;”。因此,您没有说“查看。并在org中”,而是明确指出VM应该查找类的路径是“。:org”,它不存在。但同时禁止VM查看当前目录,因此它找不到类。