0

我在搞乱类路径等。还有一些我完全不明白的东西......

假设我们在 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

Sooooo....我的问题是 - 为什么这不起作用?

(当然,我们可以替换-cp .:org-cp .:[any dir]并仍然得到相同的结果。)

据我了解(我吗?... -_-)该-classpath选项,它只是让我们指定在哪些目录中搜索所需的类。因此,如果 A.class 存在于这些目录之一中,它不应该工作吗?我的意思是 - 只是这个-cp .选项有效!

4

1 回答 1

0

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

于 2012-12-10T17:24:13.143 回答