将JAR放入JVM库比项目库有什么不同?

时间:2018-05-01 17:35:57

标签: java jar jvm

背景

我最近遇到了一个Java项目,要求我将JAR文件IngrianNAE-5.0.0.jar放入/usr/lib/jvm/java-8-oracle/jre/lib/ext/目录。 (该指示是由离开的前开发人员制作的。)

构建工具在项目构建过程中没有获取此IngrianNAE-5.0.0.jar,并且项目JAR文件无法与其IngrianNAE-5.0.0.jar目录中没有此lib/ext/的JVM一起运行

此外,即使我将此IngrianNAE-5.0.0.jar包含在我的构建路径中,例如在Maven pom.xml中的依赖项部分声明它,该项目仍然要求JVM在其IngrianNAE-5.0.0.jar目录中拥有lib/ext/。 (此时,Maven可以生成项目丰富的JAR文件,其中包含IngrianNAE-5.0.0.jar。但是,JVM仍需要IngrianNAE-5.0.0.jar目录中的lib/ext/。对我来说,看来这个IngrianNAE-5.0.0.jar不是由项目使用,而是由JVM使用。)

顺便说一句,正如IngrianNAE-5.0.0.jar为例,它只是添加到/usr/lib/jvm/java-8-oracle/jre/lib/ext/目录中的许多JAR中的一个,还有一些属性文件,例如IngrianNAE.properties等。

问题详解

为什么我必须将这样的JAR添加到项目中,而不是添加到JVM中。

它是如何运作的?

我可以查看哪些文档来获取有关它的更多信息(或教程)?

2 个答案:

答案 0 :(得分:2)

Documentation from Oracle

  

已安装的扩展是lib / ext目录中的JAR文件[...]   已安装的扩展扩展了平台的核心API [...]   安装的扩展定义的符号将在所有Java进程中可见

另见this question

答案 1 :(得分:0)

由于IngrianNAE jar文件正在通过JCE扩展JVM功能,我相信(遗憾的是)必须在JVM级别应用扩展。