1

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

4

5 回答 5

5

您的问题表明您对java平台有一些误解。

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

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

现在您知道了,您需要知道您的 java 程序是如何运行的:

您的 java 程序、所有 jar 和类都由 java 虚拟机执行。

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

如果你需要一些功能,你应该把它添加到你的 jar 中。

于 2012-08-25T05:41:32.723 回答
1

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

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

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

于 2012-08-25T07:06:14.040 回答
1

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

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

于 2012-08-25T05:36:53.167 回答
1

你可以使用这个命令:

jar uf jar-file input-file(s)

详情请参考链接:

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

于 2012-08-25T05:41:23.563 回答
0

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

我也试过 -Xbootclasspath/p 但无法让它工作。

查看用自定义版本替换 Java 类库中的类时,我发现将更改的 rt.jar 分发给您的客户存在法律问题,即使您可以弄清楚如何正确执行。因此,我计划在该页面中接受建议并创建一个 java 代理。这显然是合法且有效的。

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

于 2017-07-11T23:32:15.053 回答