Напишите файл Java, используя JavaPoet в процессоре аннотаций.

Я пытаюсь использовать processingEnv.getFiler() для создания исходного файла. Но я не вижу создания исходного файла. Ниже приведен код, который я использую:

public void javaPoetEg() {
  Filer filer = super.processingEnv.getFiler();
  MethodSpec main = MethodSpec.methodBuilder("testFiler")
    .addModifiers(Modifier.PUBLIC)
    .returns(void.class)
    .addParameter(String[].class, "args")
    .addStatement("$T.out.println($S)", System.class, "Hello, JavaPoet!")
    .build();

  TypeSpec helloWorld = TypeSpec.classBuilder("HelloWorld")
    .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
    .addMethod(main)
    .build();


  JavaFile javaFile = JavaFile.builder("com.ankit.annotation", helloWorld)
    .build();

  try{
    javaFile.writeTo(filer);
  } catch (IOException e) {
    e.printStackTrace();
  }
}

А затем вызов функции javaPoetEg в переопределенной функции process() процессора аннотаций. Что я здесь делаю неправильно?


person Ankit Shubham    schedule 10.02.2019    source источник


Ответы (2)


Я предлагаю вам взглянуть на то, как должен работать Filer. Javadoc
Местоположение исходных файлов может зависеть от параметров, указанных вами в командной строке, или вам необходимо проверить каталог по умолчанию generated.

person LppEdd    schedule 10.02.2019

Эта часть: javaFile.writeTo записывает в File или PrintStream. Итак, вы можете сделать что-то вроде этого:

File file = new File("/target/directory");
javaFile.writeTo(file); // this will make a new File with all the data you added

Or:

javaFile.writeTo(System.out) // this will print the file representation in the console

Надеюсь это поможет. Ваше здоровье.

person n3k0    schedule 05.02.2020