Я пытаюсь создать Java-код с помощью jcodemodel в моем проекте maven. Мой проект maven имеет три модуля. Я написал образец jcodemodel в одном из моих модулей для целей тестирования. Но когда я его выполню, он вызывает ошибку в строке. Но я создал каталог и также проверил. Я проверил этот пример в простом проекте maven, он работает. Но когда я даю его внутри модуля maven, он выдает ошибку. где он проверяет файл сборки?Генерация кода с использованием Jcodemodel
codeModel.build(new File("src/main/java/check"));
java.io.IOException: ЦСИ \ главная \ Java \ проверка:. Несуществующий каталог в 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();
}
}
}
Первой рекомендацией является не создание кода в области src. Назначение по умолчанию для генерации в любом виде - это target/whateverdirectory. – khmarbaise
привет, я дал в качестве codeModel.build (новый файл ("target/classes/com/cts")); но получая такую же ошибку – Ramya
Какой плагин отвечает за создание данной папки (target/classes/com/cts? – khmarbaise