我想攔截ClassLoader的loadClass方法。爲了顯示ClassLoader加載類的過程。但我不知道aspectj的工作原理。它可以修改JDK的源代碼?AspectJ是否支持修改JDK字節碼?
0
A
回答
1
您可以使用調試器並逐步瞭解過程。
AspectJ可以在編譯(CTW,編譯時編織)或類加載(LTW,加載時編織)期間將方面編織到現有的類文件中。
LTW不適用於JDK類,因爲這些類始終在編織代理之前加載。所以你有一個引導問題。
但是,您可以做的是將CTW應用於例如文件的類文件。您的JRE/JDK發行版中的rt.jar
,將編織類文件壓縮到另一個JAR中,並用它替換原始文件。然後,如果您在引導類路徑上使用aspectjrt.jar
啓動JVM,則會看到正在運行的方面。我之前已經完成了這個工作。但實際上,這不是AspectJ的設計目的。但你問,所以我告訴過你。這是一個非常先進的話題,我懷疑這是一個完整的AspectJ新手的道路 - 沒有冒犯的意思。
更新:因爲我一直在問這個問題,所以很多時候,我創建了一個小demo project出如何編織方面到JRE/JDK。我仍然認爲在正常情況下使用它是沒有意義的,但到底是什麼:爲什麼人們爬上珠穆朗瑪峯?因爲它存在。 ;-)
相關問題
- 1. Netty是否支持IBM JDK?
- 2. Weblogic 9.2是否支持Sun Jdk 1.6?
- 3. jetty 6.1.8是否支持jdk 1.5?
- 4. Android Studio是否完全支持JDK 1.8?
- 5. SQLite是否支持修改命令或不修改
- 6. grails aspectJ字節碼編織
- 7. JDK許可證:是否允許修改/複製JDK類?
- 8. 是否可以修改字節碼並將其保存爲javassist?
- 9. SonarQube支持jdk 1.5
- 10. 是不是支持PDFBOX2.0 JDK 1.5?
- 11. treetabular是否支持遠程子節點?
- 12. Java是否具有支持併發修改的數據結構?
- 13. tm包中不再支持字典()。如何修改代碼?
- 14. 不支持Android JDK 6/JDK 7完全?
- 15. JSF 1.2是否支持JDK 1.5和Servlets 2.4?
- 16. JDK 6是否支持XPath 2.0的所有功能?
- 17. 在最終的JDK 7中是否支持閉包?
- 18. WSO2 Identity Server是否支持Java 5(JDK 1.5)?
- 19. CGLIB AspectJ的字節代碼生成
- 20. 哪個Oracle JDK支持Zip64?
- 21. JDK 6支持XSLT 2.0嗎?
- 22. Android支持JDK 6或7
- 23. JavaScript是否支持逐字字符串?
- 24. Ruby是否支持逐字字符串?
- 25. 修改字節碼的特定部分
- 26. 在Firefox中是否支持css掩碼?
- 27. Sonarqube是否支持Xamarin代碼質量?
- 28. Pubnub C++是否支持密碼密鑰?
- 29. CloudKit是否支持雲代碼?
- 30. iOS - AVFoundation是否支持3D條形碼?
我爲JDK編織創建了一個演示項目。看到我更新的答案。 – kriegaex