我编写了一个在内部使用 java.util.ArrayList 和 java.util.LinkedList 的 List 实现。现在,我有一组想要动态加载然后从 Java 调用的 JAR,但是我的实现被重定向到它使用 LinkedList 或 ArrayList 的任何地方。
有没有办法做到这一点,而不必将源下载到 JAR,手动替换所有内容然后重新编译?
您可以将 Java 安装复制到一个新位置,将您的代码编译为java.util.ArrayList
和java.util.LinkedList
(即使用rt.jar
类路径上的 编译您的代码)。
然后使用jar -u
将新类放入rt.jar
. 由于rt.jar
未签名,因此您无需修改其他任何内容。
这为您提供了一个新rt.jar
的 Java 安装副本。替换文件并使用java
新副本启动项目。该代码现在将选择您的版本。
根据您使用的 Java 版本,您还可以尝试设置“引导类路径”。使用您的替换类创建一个 JAR 并将它们首先放入此类路径中。Oracle 虚拟机的文档。