我看到人们说有不同类型的类路径。例如编译时类路径和运行时类路径。
我猜想 "-cp"
或 "-classpath"
选项与 javac
一起使用时是编译时类路径。
当与java
命令一起使用时,它应该是运行时类路径。我说得对吗?
这两个类路径可以完全不同吗?
最佳答案
java
和 javac
命令接受 -cp
或 -classpath
...含义相同.
曾几何时,javac
只接受-classpath
。
Can these two classpaths [used by java and javac] be completely different?
他们可以。但是,如果您使用一种 API 版本进行编译并使用不同版本运行,则可能会遇到导致运行时错误的“二进制兼容性”问题。
因此,建议在编译时和运行时使用相同(或等效)的类路径。
<小时/>Why the same content two times?
因为内容(类路径)没有被编译到代码中。
更深入的答案是,Java 程序通常由独立编译的组件(例如库)组成,然后在运行应用程序时将它们组合在一起。每个组件构建都需要不同的类路径......根据其依赖关系。当您将所有部分放在一起时,可能需要一个不同的类路径。因此需要能够在编译和运行时以不同的方式指定类路径。
关于Java "-cp"选项,编译时还是运行时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29840322/