我的Google foo讓我失望。如果我有一些框架,可以基於註釋做代碼生成,我想同時支持構建時源代碼生成,從而使開發人員可以提前編譯它,也見得到生成的內容,甚至可能修改代碼,而且還提供了運行時字節碼一代更多動態的應用程序,例如基於插件的,應用程序,我可以使用ASM存儲這兩個任務,還是我真的需要兩次設定此,有兩個不同的庫?如果可能的話,一個例子的鏈接將受到歡迎。我可以使用與ASM相同的「生成器」生成Java字節碼和源代碼嗎?
2
A
回答
3
雖然這並沒有直接回答這個問題,我建議使用Javassist了ASM。
用Javassist您通過生成的源代碼開始時,你只需把它交給了Javassist編譯器轉成字節碼,所以你現在有兩個可用的,沒有任何額外的技巧。另外,恕我直言,爲Javassist生成源代碼比搞亂字節碼和ASM要容易得多。
1
對於構建時代碼生成,我建議使用Eclipse的Java編譯器,它不具有該開放的API,但它實際上是非常容易使用。你可以看看你如何在這裏使用它:http://git.jetbrains.org/?p=mps/mps.git;a=tree;f=core/kernel/source/jetbrains/mps/compiler;h=6787147e3b36899574f042dd2132a4c08963670e;hb=HEAD(這段代碼主要是由我編寫的)。還有一個如何動態加載編譯類的例子(MyClassLoader內部類)。
+0
我不確定這對我是否有用,但我給你+1的錯字:「你可以*在這裏起訴」LOL! – 2012-03-26 08:55:01
相關問題
- 1. 有什麼工具可以生成ASM ClassWriter代碼嗎?
- 2. Java字節碼生成
- 3. 用於Java的gRPC protobuf生成器 - 不同的生成代碼
- 4. 我可以從PyInstaller生成的包中獲取源代碼嗎?
- 5. 生成Java源代碼和跳轉
- 6. 的Java/Scala庫生成Java源代碼
- 7. Java代碼生成器
- 8. 可以使用哪個庫/程序來生成Java字節碼?
- 9. Java代碼生成
- 10. 使用ADO.NET生成代碼後重組代碼DbContext生成器
- 11. 如何使用寧靜代碼生成器生成代碼(.ts)
- 12. 代碼生成器與代碼重構
- 13. 用於java代碼的wsdl生成器
- 14. CGLIB AspectJ的字節代碼生成
- 15. 自動生成Java源代碼
- 16. Eclipse UML插件生成Java源代碼
- 17. antlr - 從java源代碼生成語法
- 18. 從java源文件代碼生成
- 19. 從AST生成源代碼
- 20. JPA的Java代碼生成
- 21. 生成不生成代碼
- 22. QR代碼,可以用R生成?
- 23. 如何設計生成Python代碼的代碼生成器
- 24. XSD代碼生成器空節點
- 25. 我可以從cmd生成的url運行php代碼嗎?
- 26. 使用Asm字節碼生成器(ClassWriter)生成具有泛型類型的方法
- 27. Oracle和Eclipse編譯器生成的java字節碼差異
- 28. 代碼生成 - XML到Java
- 29. 使用線框生成Java代碼
- 30. 使用Java註釋 - 生成代碼
我可以看到你的觀點。我前段時間看過Javaassist。如果沒有人知道,那麼這可能是我要做的。 – 2012-03-26 08:57:27
我又看了一遍,我不確定如何用Javassist做到這一點。您用來生成類文件的「源代碼」可能包含諸如「$ cflow(...)」之類的東西,因此它不是真正的Java代碼。我只能看到方法來保存CtClass中的編譯類。你確定這是支持嗎? – 2012-03-26 09:29:30
一天之後沒有其他答案。 ASM不可能,所以你可以獲得積分。 – 2012-03-27 11:00:18