如何使用Maven将其中一个JRE库(例如 rt.jar )嵌入到我的WAR中?
是否有maven插件/命令来执行此操作?
答案 0 :(得分:6)
将rt.jar
文件放入WAR文件不会导致Java使用它。在查看webapp中的JAR之前,Web容器的类加载器应始终尝试系统类加载器,系统类加载器将在引导类路径中使用rt.jar
;即JRE安装目录中的那个。
这也是一样。如果Java运行时使用了您的rt.jar
,它可能会陷入可怕的混乱。 rt.jar
中的代码可能会尝试调用未在Java可执行文件中实现的本机方法,或者可能调用其行为和/或签名以不兼容的方式更改的内部方法。
如果您打算这样做以“修复”类库中的某些行为,我的建议是:
答案 1 :(得分:4)
我认为这不是一个好主意。 rt.jar
是您的JRE的一部分,最好保持独立。
答案 2 :(得分:2)
正如adarshr above已经指出的那样,提供自己的JRE jar并不是一个好主意。
如果你需要在maven存储库中包含一些你没有找到的jar,你可以按照以下步骤添加下载的jar:
将rt.jar放在maven本地存储库中,例如
mvn install:install-file -Dfile = myjar.jar -DgroupId = some.group -DartifactId = someartifact Dversion = 1.0 -Dpackaging = jar
在pom.xml
上对此rt.jar放置一个依赖项 <dependency>
<groupId>some.group</groupId>
<artifactId>someartifact</artifactId>
<version>1.0</version>
<scope>runtime</scope>
</dependency>
构建工件时,someartifact.jar将包含在其中。