繁体   English   中英

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

[英]Why the specified classpath doesn't find the extended class?

我在弄乱类路径等。还有一些我完全不了解的东西...

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

[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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM