javac 的类路径和源路径选项之间的差异

2022-09-01 02:38:25

我阅读了 Sun 文档和许多关于 Stack Overflow 的帖子,但我仍然对 Java 编译器选项和 .-cp-sourcepath

假设我有这个目录结构:

c:\Java\project1\src (where the Java source files are)  
c:\Java\project1\bin (where the Java class files will be or already are)  

假设我在包中有一个源文件,并且源文件夹中的目录结构是正常的。MainClass.javacom.mypackage

我在 project1 目录中并运行:

javac -d bin -sourcepath src src/com/mypackage/MainClass.java  

javac -d bin -classpath src src/com/mypackage/MainClass.java  

我得到同样的结果。在详细模式下,源文件的搜索路径在这两种情况下都是如此。src

如果有人能帮助我弄清楚这些选项的细节,那就太好了。


答案 1
 -classpath classpath

设置用户类路径,覆盖 CLASSPATH 环境变量中的用户类路径。如果未指定 CLASSPATH 或 -classpath,则用户类路径由当前目录组成。

如果未指定 -sourcepath 选项,则会在用户类路径中搜索源文件和类文件。

-sourcepath sourcepath

指定要搜索类或接口定义的源代码路径。与用户类路径一样,源路径条目由分号分隔(;)并且可以是目录、JAR 存档或 ZIP 存档。如果使用包,则目录或归档文件中的本地路径名必须反映包名。

请注意,如果找到通过类路径找到的类的源,则会自动重新编译这些类。


答案 2
  • 源路径是要编译的代码的根的位置
  • 类路径可以包含您的代码,也可以包含您需要的库

推荐