使用JCodeModel生成Java字节码

3

我创建了JCodeModel,其中包含所有我想要生成的类。 问题是我想要生成字节码(.class文件)和一个jar文件,但不想生成源代码。 有没有一种优雅的方式可以在不生成.java文件的情况下生成.class文件和jar文件呢?


JCodeModel是一个Java源代码生成库,它如何在不编译所生成的源代码的情况下生成字节码? - John Ericksen
@JohnEricksen 如果我知道,我就不会问了。通过询问如何优雅地生成我所说的字节码,我谈论的是编译过程。关键是我想以最短、最简单和最优雅的方式获得一个构件(jar),从我的角度来看,创建数百个源代码文件,然后将它们编译成一个jar(最后删除源代码)是一个额外的步骤,我希望避免/跳过。 - DiSol
您是否希望通过注解处理器生成字节码? - John Ericksen
@JohnEricksen,我不确定我理解这个问题。我目前正在使用JCodeModel从头生成Java文件,然后将生成的源代码编译成类文件。我想要实现的是在不先创建Java文件的情况下获取类文件。什么是“通过注释处理器生成的字节码”?注释与此有何关系? - DiSol
@JohnEricksen 在构建过程中 - 我正在创建一个工具,它应该连接到数据库并为某个表的每个记录创建一个类文件,并将它们打包成一个jar文件。稍后将要构建的其他项目依赖于这个jar文件并使用这些类。 - DiSol
显示剩余2条评论
1个回答

0

您可以考虑使用多个Java字节码生成器之一:任何Java字节码生成指南?

但是,如果您更喜欢处理JCodeModel库,则可以选择将中间Java代码作为临时阶段保存在内存中。以下是一系列提示:

(1) 这里是一个示例,演示如何在内存中获取Java源代码文本:在不写入文件的情况下动态编译生成的类

(2) 然后,您可以使用类似的方法再次将已编译的字节码保存在内存中:https://github.com/trung/InMemoryJavaCompiler/blob/master/src/main/java/org/mdkt/compiler/InMemoryJavaCompiler.java

(3) 最后,要从存储在内存中的字节码创建jar文件,只需执行类似于以下操作:如何使用JarOutputStream创建JAR文件?

PS:最后一阶段可以直接将流写入数据库(BLOB字段或类似字段)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接