Java "-cp"选项,编译时还是运行时?

标签 java classpath

我看到人们说有不同类型的类路径。例如编译时类路径和运行时类路径。

我猜想 "-cp""-classpath" 选项与 javac 一起使用时是编译时类路径。

当与java命令一起使用时,它应该是运行时类路径。我说得对吗?

这两个类路径可以完全不同吗?

最佳答案

javajavac 命令接受 -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/

相关文章:

java - 处理一个 Spring bean/接口(interface)的多个实现

java - Eclipse 可序列化成员验证

java - WebDriver 在 Android 应用程序的 Selenium 中不可用

java - 在 Tomcat 8 中将外部资源添加到类路径

clojure - 我如何依赖每个 clojure contrib 库?

java - NLTK斯坦福分段器,如何设置CLASSPATH

java - 在 Maven 构建的 JAR 中多次包含不同名称的文件

java - 为什么 Files.probeContentType 返回 null

即使已使用 javap 验证类路径和 .class 文件,Java 也找不到符号错误

java - 从命令行将 JAR 依赖项与可执行 JAR (Über JAR) 捆绑在一起