java替换sorce包的代码
使用背景:現在都會使用流量錄制工具。但是在重放錄制的流量時,會因為重發到的機器和原來的機器的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還是有存在可以使用的。這里還是需要驗證
總結
以上是生活随笔為你收集整理的java替换sorce包的代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android NDK 之CmakeLi
- 下一篇: 一个中间继电器引发的损失