我想能够编辑字节码并重新编译为可执行的类文件。我不知道如何做到这一点。我尝试使用javap -c和-v进行反编译,编辑某些内容,并将其更改回我的Class文件,但出现错误“错误:无法找到或加载主类Test.class”。我也想从字节码中生成java源代码。任何帮助?我想自己做这个,而不使用外部程序。如果可能,我想自己做。如何重新组装由javap生成的java字节码?
回答
Javassist(Java编程助手)是Java的加载时反射系统。它是用于编辑Java中的字节码的类库;它使Java程序能够在运行时定义一个新类并在JVM加载它之前修改一个类文件。 http://java-source.net/open-source/bytecode-libraries
我会这样做,但我想自己做,而不是使用预先写好的工具。 (除必要之外)。如果可以的话,我想做字节码到类文件的转换以获得自己的源码。 – tycoon177
你必须学习Class文件格式,所以仔细阅读整个页面http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html。更有可能你有许多编码解析方法的问题。因此,我强烈建议你不要这样,直到没有特殊目的。 –
java平台(如JDK中)不提供将类型代码源编译为类文件的工具(它甚至没有真正指定JLS中的汇编语法)。
在字节码汇编程序的帮助下,您可以像汇编程序那样使用字节码。看看Jasmin:http://jasmin.sourceforge.net/(虽然语法与javap输出的语法不完全相同)。
- 1. 使用javap的读取字节代码
- 2. 任何方式从字节码重新生成堆栈映射?
- 3. 使用JCodeModel生成java字节码
- 4. 如何检查Clojure从repl生成的java字节码?
- 5. 重新组合字节以生成quint32值的错误
- 6. 如何从C#中的字节数组生成哈希码?
- 7. 在Java中重新生成生成的MD5代码
- 8. 生成PDF字节数组
- 9. 访问由ruby生成的样例程序的字节码
- 10. 重新生成JSF组件
- 11. T4MVC - 如何重新生成?
- 12. 如何重新生成user.confirmation_token
- 13. 如何重新生成由dataTable使用Ajax动态生成的inputText
- 14. 如何重新实现由Qt生成的Ui_MainWindow
- 15. 访问Nashorn生成的字节码
- 16. CGLIB AspectJ的字节代码生成
- 17. drupal'节点'表重新生成
- 18. 动态生成的java字节码是否需要优化?
- 19. 在Java中生成一个12字节的随机码
- 20. 了解为简单Java类生成的字节码
- 21. Oracle和Eclipse编译器生成的java字节码差异
- 22. 生成Java验证器错误的字节码工具
- 23. 是否有任何来自字节代码的Java代码生成器
- 24. 基于JVM的语言/运行时如何生成Java字节码?
- 25. 如果节俭文件没有被更改,如何防止java代码的日期重新生成?
- 26. 如何转储ASM生成的类的字节码?
- 27. scala生成的字节码如何丢弃检查的异常?
- 28. 如何在异常后在java中重新生成节俭服务器?
- 29. 如何配置svcutil生成的代码以便重新生成正确的WSDL?
- 30. 如何字节数组由PIL在Python
你为什么要这么做?这种打败了使用Java的目的。它只是其中之一,“因为我可以”的东西? – MadConan
@ tycoon177:如果这是你的目标,你可以编写你自己的java编译器。 – MadConan