Java 为什么指定的类路径没有';找不到扩展类?

Java 为什么指定的类路径没有';找不到扩展类?,java,classpath,javac,cp,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 {} 到目前为止还不错。。。现在,在当前目录中,我们调用 javac org\amigo\B.java 这可以很好地

我一直在乱搞类路径等,有一些东西我完全不明白

假设我们有两个文件在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 {}
到目前为止还不错。。。现在,在
当前目录中,我们调用

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


据我所知(我是否?…-)
-classpath
选项,我们只需指定在哪些目录中搜索所需的类。那么,如果A.class存在于其中一个目录中,它是否应该工作?我的意思是-只有
-cp.
选项起作用了

在Windows上,路径分隔符是“;”。因此,您没有说“look in.and in org”,而是显式地声明VM应该查找类的路径是“..:org”,它不存在。但同时,它禁止VM在当前目录中查找,因此它找不到类