java替换sorce包的代码
使用背景:现在都会使用流量录制工具。但是在重放录制的流量时,会因为重发到的机器和原来的机器的ip不同,使用随机数的结果不同,导致最后的结果和原始录制的结果不一样。解决方案:原始的录制流量的开源项目并未解决这个问题。使用的方案是:1. 对比关注的字段 2. 可以设置忽略的字段可供参考的资料很少,这里做下记录。实际使用时,需要验证:https://openjdk.java.net/proj...
使用背景:现在都会使用流量录制工具。但是在重放录制的流量时,会因为重发到的机器和原来的机器的ip不同,使用随机数的结果不同,导致最后的结果和原始录制的结果不一样。
解决方案:原始的录制流量的开源项目并未解决这个问题。使用的方案是:1. 对比关注的字段 2. 可以设置忽略的字段
可供参考的资料很少,这里做下记录。实际使用时,需要验证:
https://openjdk.java.net/projects/jigsaw/quick-start#xoverride
在java8及之前,可以使用-Xbootclasspath/p 直接将自己写的代码覆盖原始的source包代码,非常方便。可惜的是,从jdk9及之后,因为使用模块化的原因,不能再使用-Xbootclasspath/p进行模块修补。
查到还可以使用-Djava.endorsed.dirs使用。但是其是有限制的,不能覆盖java.lang.*包中的类。有可能该方法也不可使用。
标准方法是使用--patch-module方式,但是该方式的具体验证还需要实操。
上文链接中的:--patch-module一节中
https://www.e-learn.cn/content/wangluowenzhang/2210181
也可以相互参考
https://www.oracle.com/technetwork/java/javase/9-relnote-issues-3704069.html
也有说到The boot class path has been mostly removed in this release. The java -Xbootclasspath
and -Xbootclasspath/p
options have been removed. The javac -bootclaspath
option can only be used when compiling to JDK 8 or older. The system property sun.boot.class.path
has been removed. Deployments that rely on overriding platform classes for testing purposes with -Xbootclasspath/p
will need to changed to use the --patch-module
option that is documented in JEP 261. The -Xbootclasspath/a
option is unchanged.
/a还是有存在可以使用的。这里还是需要验证
更多推荐
所有评论(0)