![](/img/trans.png)
[英]java runs fine with 'absolute' path, doesn't run with CLASSPATH specified
[英]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.