【问题标题】:How to update rt.jar file?如何更新 rt.jar 文件?
【发布时间】:2012-08-20 14:41:19
【问题描述】:

我想向rt.jar 添加一些类文件。我怎么能做到这一点?

【问题讨论】:

  • 不!!!!不要这样做!!!!!!
  • 它只是一个jar文件,所以你可以使用jar工具的u选项来更新它。但是,您永远不应该这样做。认为你应该这样做是一个强烈的信号,表明你不了解这个平台。

标签: java jar


【解决方案1】:

你的问题说明你对java平台有一些误解。

首先你需要知道 rt.jar 是什么以及它的作用:

rt.jar 是包含 java 运行时所需的所有类的 jar。因此它的名字是 rt.jar

既然你知道了,你需要知道你的 java 程序是如何运行的:

你的 java 程序,你所有的 jars 和 classes 都由 java 虚拟机执行。

如您所见,您编写的代码和 java 运行时使用的 rt.jar 是完全独立的,应该保持如此。

如果您需要一些功能,您应该将其添加到您的 jar 中。

【讨论】:

    【解决方案2】:

    不要更新它。为什么要更新它?

    无论如何,如果你想更新它,我知道一种方法,你可以在 winrar 中打开 jar 文件并将更新的 .class 文件粘贴到存档中。但是您的 jar 可能会处于不一致的状态。风险自负。

    【讨论】:

      【解决方案3】:

      你可以使用这个命令:

      jar uf jar-file input-file(s)
      

      详情请参考链接:

      java.sun.com/docs/books/tutorial/deployment/jar/update.html

      【讨论】:

        【解决方案4】:

        更新rt.jar 的最佳方法是安装更新的Java 版本。 ;)

        如果您想在新包中添加自己的类,可以将它们添加到类路径中的 jar 中。这比更改现有类更可取。

        如果唯一的选择是更改现有类,您可以在 jar 中创建一个“补丁”,将其添加到引导类路径之前,或者您可以将 jar 添加到 lib/endorsed 目录。我不会为生产代码执行此操作,仅用于您自己的测试。

        【讨论】:

          【解决方案5】:

          我已经尝试了带有 u 和 0(即零)选项的 jar.exe,它最接近原始 rt.jar 文件,但如果我更新了 JDK 的 JRE 的 rt.jar,我遇到了问题更新后编译和震动。不知道为什么!只需使用 JRE 运行程序似乎就可以了。

          我也尝试过 -Xbootclasspath/p 但无法正常工作。

          查看Replace a class within the Java class library with a custom version,我发现将更改的 rt.jar 分发给您的客户存在法律问题,即使您可以弄清楚如何正确执行。因此,我计划在该页面中接受建议并创建一个 java 代理。这显然是合法且有效的。

          人们可能想要修改 rt.jar 的一个原因是在使用 -g 选项编译 JDK 附带的源代码后添加调试信息。人们可能还想修补一些东西。这些当然是供自己使用的。

          【讨论】:

            猜你喜欢
            • 2011-07-01
            • 1970-01-01
            • 2013-04-04
            • 1970-01-01
            • 2017-04-22
            • 2013-02-04
            • 1970-01-01
            • 1970-01-01
            • 2013-10-06
            相关资源
            最近更新 更多