如何更新rt.jar文件?

huwehgph  于 2021-07-09  发布在  Java
关注(0)|答案(5)|浏览(286)

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

slsn1g29

slsn1g291#

不要更新它。为什么要更新它?
不管怎样,如果你想更新它,我知道一种方法,你可以在winrar中打开jar文件,然后将更新的.class文件粘贴到归档文件中。但您的jar可能会处于不一致的状态。你自己承担风险。

u91tlkcl

u91tlkcl2#

更新 rt.jar 是为java安装一个更新的版本
如果您想在新包中添加自己的类,可以将这些类添加到类路径中的jar中。这比更改现有类更可取。
如果唯一的选择是更改现有的类,那么可以在jar中创建一个“补丁”,并将其预先添加到引导类路径中,也可以将jar添加到 lib/endorsed 目录。我不会为生产代码这样做,只为您自己的测试。

kr98yfug

kr98yfug3#

您的问题表明您对java平台有一些误解。
首先,您需要知道rt.jar是什么以及它的作用:
jar是包含java运行时所需的所有类的jar。因此它被命名为rt.jar
既然您知道了这一点,就需要知道java程序是如何运行的:
java程序、所有JAR和类都由java虚拟机执行。
因此,正如您所看到的,您编写的代码&java运行时使用的rt.jar是完全独立的,应该保持这样。
如果您需要一些功能,应该将其添加到jar中。

aamkag61

aamkag614#

我已经尝试了jar.exe的u和0(即零)选项,这得到了最接近于原来的rt.jar文件,但如果我已经更新了jdk的jre的rt.jar,我在编译和jaring更新后有问题。不知道为什么!简单地用jre运行一个程序似乎是可行的。
我还尝试了-xbootclasspath/p,但无法使其工作。
在查看用自定义版本替换java类库中的类时,我发现将修改过的rt.jar分发给您的客户会有法律问题,即使您能够找到正确的方法。因此,我计划接受该页面中的建议并创建一个java代理。这显然是合法的,而且有效。
人们可能希望修改rt.jar的一个原因是在编译带有-g选项的jdk附带的源代码之后添加调试信息。你可能也想修补一些东西。当然,这些是自己用的。

des4xlb0

des4xlb05#

您可以使用以下命令:

jar uf jar-file input-file(s)

有关详细信息,请参阅链接:
java.sun.com/docs/books/tutorial/deployment/jar/update.html

相关问题