我想将一些类文件添加到rt.jar
. 我怎么能做到这一点?
5 回答
您的问题表明您对java平台有一些误解。
首先,您需要知道 rt.jar 是什么以及它的作用:
rt.jar 是包含 java 运行时所需的所有类的 jar。因此它的名字是rt .jar
现在您知道了,您需要知道您的 java 程序是如何运行的:
您的 java 程序、所有 jar 和类都由 java 虚拟机执行。
因此,您可以看到您编写的代码和 java 运行时使用的 rt.jar 是完全独立的,应该保持如此。
如果你需要一些功能,你应该把它添加到你的 jar 中。
更新的最佳方法rt.jar
是安装 Java 的较新版本。;)
如果要在新包中添加自己的类,可以将它们添加到类路径中的 jar 中。这比更改现有类更可取。
如果唯一的选择是更改现有类,您可以在 jar 中创建一个“补丁”,将其添加到引导类路径之前,或者您可以将 jar 添加到lib/endorsed
目录中。我不会为生产代码执行此操作,仅用于您自己的测试。
不要更新它。为什么要更新它?
无论如何,如果你想更新它,我知道一种方法,你可以在 winrar 中打开 jar 文件并将更新的 .class 文件粘贴到存档中。但是您的 jar 可能会处于不一致的状态。风险自负。
你可以使用这个命令:
jar uf jar-file input-file(s)
详情请参考链接:
我已经尝试了带有 u 和 0(即零)选项的 jar.exe,它看起来最接近原始 rt.jar 文件,但是如果我更新了 JDK 的 JRE 的 rt.jar,我在编译和震动时会遇到问题更新后。不知道为什么!简单地使用 JRE 运行程序似乎可以工作。
我也试过 -Xbootclasspath/p 但无法让它工作。
查看用自定义版本替换 Java 类库中的类时,我发现将更改的 rt.jar 分发给您的客户存在法律问题,即使您可以弄清楚如何正确执行。因此,我计划在该页面中接受建议并创建一个 java 代理。这显然是合法且有效的。
人们可能想要修改 rt.jar 的一个原因是在使用 -g 选项编译 JDK 附带的源代码后添加调试信息。人们可能还想修补一些东西。这些当然是供自己使用的。