可选依赖JVM的工作原理

时间:2016-11-22 11:28:11

标签: java maven jvm

可以将maven依赖声明为optionalhttps://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html),这意味着项目构建需要依赖,但不会进一步传播。

问题是JVM如何工作,当另一个项目引用使用可选依赖项构建的项目时,另一个项目不提供此可选依赖项。

即。 JVM为什么不崩溃?或者是因为只有在第一次使用时才将类加载到内存中,这就是为什么它可以发送在存在所需依赖项时编译的代码,但是它们不一定要在目标平台上,除非使用项目中的那些类?

它是否正确理解它的工作原理和原因?这有例外吗?

1 个答案:

答案 0 :(得分:0)

如果你使用jar而你也没有将(可选的)依赖项添加到你的项目中,那么可以导致JVM找不到类(这实际上会杀死你的程序) 。这取决于此类是否实际在运行时使用。

我可以声明对jar的依赖,只使用它的一小部分,所以我可能不会遇到问题。也许jar可以使用三种数据库,但我只使用其中一种,所以我忽略了其他依赖项。

一般来说,省略依赖关系总是有点赌博,应该运行足够的测试来验证是否存在所有必要的类。