gpt4 book ai didi

jakarta-ee - 使用 Jcodemodel 生成代码

转载 作者:行者123 更新时间:2023-12-03 09:51:31 36 4
gpt4 key购买 nike

我正在尝试在我的 maven 项目中使用 jcodemodel 生成 java 代码。我的 Maven 项目具有三个模块。我已经在我的模块之一中编写了一个示例 jcodemodel 用于测试目的。但是当我执行它时,会在行中抛出错误。但是我创建了目录并进行了检查。我在它工作的简单 Maven 项目中检查了这个例子。但是当我在 maven 模块中给出它时,它会抛出错误。它在哪里检查构建文件?

codeModel.build(new File("src/main/java/check"));

java.io.IOException: src\main\java\check: non-existent directory at com.sun.codemodel.writer.FileCodeWriter.(FileCodeWriter.java:73)

public class Consumer {

/**
* @param args
* @throws JClassAlreadyExistsException
* @throws IOException
* @throws JAXBException
*/
public static void main(String[] args) throws JClassAlreadyExistsException, IOException, JAXBException {
writeCodeModel("com.cts");
}

public static JType getTypeDetailsForCodeModel(JCodeModel jCodeModel, String type) {
if (type.equals("Unsigned32")) {
return jCodeModel.LONG;
} else if (type.equals("Unsigned64")) {
return jCodeModel.LONG;
} else if (type.equals("Integer32")) {
return jCodeModel.INT;
} else if (type.equals("Integer64")) {
return jCodeModel.LONG;
} else if (type.equals("Enumerated")) {
return jCodeModel.INT;
} else if (type.equals("Float32")) {
return jCodeModel.FLOAT;
} else if (type.equals("Float64")) {
return jCodeModel.DOUBLE;
} else {
return null;
}
}

// Function to generate CodeModel Class
public static void writeCodeModel(String factroyPackage) throws JAXBException {
try {

JCodeModel codeModel = new JCodeModel();
JDefinedClass foo = codeModel._class( "Foo" ); //Creates a new class

JMethod method = foo.method( JMod.PUBLIC, Void.TYPE, "doFoo" ); //Adds a method to the class
method.body()._return( JExpr.lit( 42 ) ); //the return statement

codeModel.build(new File("src/main/java/check"));

} catch (Exception ex) {

ex.printStackTrace();
}
}

}

最佳答案

异常信息看起来很清楚:

java.io.IOException: src\main\java\check: non-existent directory at com.sun.codemodel.writer.FileCodeWriter.(FileCodeWriter.java:73)

要创建目标目录,您可以像这样修改代码,生成源的首选文件夹位于 target/generated-sources/

File target = new File("target/generated-sources/java");
if (!target.mkdirs()) {
throw new IOException("could not create directory");
}
codeModel.build(target);

关于jakarta-ee - 使用 Jcodemodel 生成代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10581280/

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