Java类路径相关
我上了两节课Java类路径相关,java,Java,我上了两节课 package xcom; public class A { } package xcom; public class B extends A { } 目录结构为: foo/test/xcom/A.java foo/test/xcom/B.java 我首先编译了A.java,然后删除了A.java文件,以便xcom现在包含 java和A.class,现在终于再次使用xcom作为我编译的当前目录 java使用命令“javacb.java”和B.java在同一目录中生成,如下
package xcom;
public class A { }
package xcom;
public class B extends A { }
目录结构为:
- foo/test/xcom/A.java
- foo/test/xcom/B.java
目录类,那么为什么要编译这个程序。请帮助
javac
仅编译B.java
。它不会重新编译A.java
。相反,它使用编译版本:A.class
,而javac
希望它存在于类路径中。由于B.java
编译得很好,您的CLASSPATH
显然设置正确。A.java
的存在与此无关
这里有一些。不管您是否设置它,它至少是隐式正确设置的,因为B.java
编译得很好。可能它只是在启动命令提示符的同一目录中查找。我真的不能说,因为我不知道你的具体设置。你说它使用了一个.class,那么这是否意味着javac命令在默认情况下会搜索当前目录中的类文件。如果在执行javac
时,当前工作目录是../foo/test/xcom/
,那么是的。这与设置类路径
并包含
元素时相同。我不确定,但我怀疑这是真的。这是关于和的文档。您查找的信息可能就在这里。“如果我们在命令行中给他任何其他类路径,那么它就无法在当前目录中找到类,而只能在指定的类路径中搜索”。如果将
放入类路径,那么它确实会搜索当前目录。也就是说,调用javac
的目录。