gpt4 book ai didi

java - 在运行时编译动态生成的类而不写入文件

转载 作者:行者123 更新时间:2023-12-01 14:24:06 24 4
gpt4 key购买 nike

我正在使用 JCodeModel 生成 java 源代码,现在想在运行时进行编译。但是我之前不想把Java文件写入光盘。

据我所知,可以使用 javax.tools.JavaCompiler ( see example ) 进行动态编译,但看起来我需要它的源代码。

不幸的是,我找不到直接从 JDefinedClass 获取源代码的方法。好像我需要将 JDefinedClass 写入光盘上的 File 对象,然后再读取源代码。

这真的有必要还是有一些解决方法?

最佳答案

您可以使用以下代码避免磁盘操作,并使用 SingleStreamCodeWriter 将代码直接写入内存:

JCodeModel jCodeModel = createJCodeModel(); // create and prepare JCodeModel 
ByteArrayOutputStream baos = new ByteArrayOutputStream();
CodeWriter codeWriter = new SingleStreamCodeWriter(baos);
jCodeModel.build(codeWriter);

String code = baos.toString(); // you can use toString(charset) if there are special characters in your code

关于java - 在运行时编译动态生成的类而不写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13608290/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com