我正在寻找一种简洁的方法来覆盖引导类路径中的类,rt.jar。原因是OpenJDK7错误http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7104625
对这个bug的修复是对sun.awt.X11.XComponentPeer的一个微不足道的更改(参见链接邮件列表帖子)。所以我想知道是否有一种简单的方法可以覆盖我的类路径中受影响的类,而不必重新打包/重新构建rt.jar (这样就不会在下次自动更新OpenJDK时丢失修复程序)。
理想情况下,它也会影响Eclipse...
我假设java -Djava.system.class.loader=myClassLoader可以工作?有没有其他方法可以用这样的“热修复”来覆盖单个类?(注意:不是在我自己的代码中使用,而是在Java AWT代码中深入使用)
发布于 2011-12-08 23:11:07
您可以使用VM参数-Xbootclasspath/p在您自己的JAR文件前面加上打过补丁的类到引导类路径。
发布于 2011-12-08 23:07:34
我认为唯一受支持的方法是通过替换所需的*.class文件来“修补”rt.jar。7-Zip可以帮助你轻松做到这一点。
这正是甲骨文为其FPUpdater工具提供双重解析错误修复的方式,该工具本质上就是一个执行此操作的脚本。(Some history.)
发布于 2011-12-08 23:13:54
我认为你可以尝试使用javaagent,当JVM加载系统类时,你必须截获事件,并将它与你的类进行交换。
https://stackoverflow.com/questions/8433047
复制相似问题