我想拦截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