如何使用maven将rt.jar嵌入到我的WAR中

时间:2011-10-05 10:56:12

标签: maven jar java

如何使用Maven将其中一个JRE库(例如 rt.jar )嵌入到我的WAR中?

是否有maven插件/命令来执行此操作?

3 个答案:

答案 0 :(得分:6)

rt.jar文件放入WAR文件不会导致Java使用它。在查看webapp中的JAR之前,Web容器的类加载器应始终尝试系统类加载器,系统类加载器将在引导类路径中使用rt.jar;即JRE安装目录中的那个。

这也是一样。如果Java运行时使用了您的rt.jar,它可能会陷入可怕的混乱。 rt.jar中的代码可能会尝试调用未在Java可执行文件中实现的本机方法,或者可能调用其行为和/或签名以不兼容的方式更改的内部方法。


如果您打算这样做以“修复”类库中的某些行为,我的建议是:

  1. 不要这样做......找出一个解决方法。
  2. 如果你必须这样做,那么请查看OpenJDK源代码,修补“bug”,构建一个新的JDK / JRE并使用 作为你的JRE。

答案 1 :(得分:4)

我认为这不是一个好主意。 rt.jar是您的JRE的一部分,最好保持独立。

答案 2 :(得分:2)

正如adarshr above已经指出的那样,提供自己的JRE jar并不是一个好主意

如果你需要在maven存储库中包含一些你没有找到的jar,你可以按照以下步骤添加下载的jar:

  1. 将rt.jar放在maven本地存储库中,例如

    mvn install:install-file -Dfile = myjar.jar -DgroupId = some.group -DartifactId = someartifact Dversion = 1.0 -Dpackaging = jar

  2. 在pom.xml

    上对此rt.jar放置一个依赖项

    <dependency> <groupId>some.group</groupId> <artifactId>someartifact</artifactId> <version>1.0</version> <scope>runtime</scope> </dependency>

  3. 构建工件时,someartifact.jar将包含在其中。