我正在使用自定義ClassLoader在運行時生成一些(代理)類的Java框架。我希望得到任何這樣的類,即自定義ClassLoader從loadClass(..)返回與此類對應的原始字節數組。這可能嗎?我知道,如果一個類作爲資源存在,那麼你可以使用輸入流以二進制格式加載該類,但如果該類是在運行時生成的,該怎麼辦?獲取在運行時生成的類的字節
回答
註冊一個ClassFileTransformer。記錄您需要的數據,而不是修改字節。
是的,我們實際上幾個星期前就這樣做了。有用。 – user66237 2010-05-25 06:10:13
如果用自己的替換自定義ClassLoader,則可以添加一些機制來保存原始字節。
ClassLoader中的類由defineClass()方法創建。如果你已經有了一個自定義類加載器,你可以簡單地覆蓋所有的defineClass()方法。對於該方法,您傳遞一個包含類的字節的byte []。保存這些內容,然後您可以稍後訪問它們,但是您需要爲您的應用程序進行訪
有關更多信息,請參見[defineClass()Java Documentation] [1]。
[1]:http://java.sun.com/javase/6/docs/api/java/lang/ClassLoader.html#defineClass(java.lang.String,字節[],INT,INT)
所有的defineClass方法都是final的。 – 2010-05-21 05:56:45
- 1. 用於較大方法/類的運行時字節碼生成
- 2. 在Elixir運行時獲取字節碼
- 3. 有沒有辦法在運行時獲取類的字節碼?
- 4. 運行時獲取字節碼
- 5. 在運行時試圖生成Dex字節碼
- 6. Ruby在運行時生成子類
- 7. 在運行時從wsdl生成JAVA類
- 8. java在運行時生成類文件
- 9. 在運行時生成類型
- 10. 在運行時查看類字節碼
- 11. 在運行時動態獲取javascript數組成員的名字
- 12. 在運行時生成
- 13. 在運行時從Jenkins Workflow腳本獲取生成日誌?
- 14. C#在運行時獲取定義字典的類型
- 15. 在運行時從運行時生成的另一個對象生成的調用類
- 16. 獲取派生模板實例化的運行時類型
- 17. 當wsdl文件生成時如何獲取字節數組?
- 18. 在運行時獲取模板類型
- 19. 在運行時生成HTML的findElement
- 20. 在運行時生成的屬性(PropertyGrid.SelectedObject)
- 21. 如何在運行時獲得從JSP生成的servlet類的文件路徑?
- 22. 獲取使用TypeBuilder在運行時創建的類的類型
- 23. 如何在運行時在代碼中獲取NHibernate生成的SQL?
- 24. 從JVM獲取正在運行的字節碼
- 25. 是否有可能在運行時生成並運行TemplateHaskell生成的代碼?
- 26. 獲取其上運行時產生
- 27. 在運行時生成的類中使用Kotlin對象
- 28. 在運行時生成新類的實例失敗
- 29. 如何在運行時生成未知類型的實例?
- 30. 如何從PDF生成的PDF中獲取字節數組?
你沒有權限訪問自定義類加載器的源代碼嗎? – stacker 2010-01-15 20:29:25