Я использую пользовательский обработчик аннотации и имею новую проблему. Я использую Gradle (3.1.1), и когда я добавляю путь к файлу, который будет сгенерирован моим процессором, в sourceSet я получаю странные проблемы.endPosTable уже установлен при добавлении sourceSet
Я выполняю команду gradle clean build
, а затем gradle build
, после чего сборка будет уничтожена. Стоп-кадр, который я получаю, довольно распространен для моего удивления.
An exception has occurred in the compiler (1.8.0_91). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.IllegalStateException: endPosTable already set
at com.sun.tools.javac.util.DiagnosticSource.setEndPosTable(DiagnosticSource.java:136)
at com.sun.tools.javac.util.Log.setEndPosTable(Log.java:350)
at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:667)
at com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:950)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.<init>(JavacProcessingEnvironment.java:892)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.next(JavacProcessingEnvironment.java:921)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1187)
at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:856)
at com.sun.tools.javac.main.Main.compile(Main.java:523)
at com.sun.tools.javac.main.Main.compile(Main.java:381)
at com.sun.tools.javac.main.Main.compile(Main.java:370)
at com.sun.tools.javac.main.Main.compile(Main.java:361)
at com.sun.tools.javac.Main.compile(Main.java:56)
at com.sun.tools.javac.Main.main(Main.java:42)
Если я всегда чист перед сборкой у меня нет проблемы, также представляют собой сборки всегда преуспевающие, когда я не добавить sourceSet. Я даже попытался удалить файл прямо перед созданием нового сгенерированного файла в моем обработчике аннотаций, но это тоже не помогло.
При исследовании я также нашел интересную ссылку: JDK Bug report
Но думать о том, что я либо должен всегда чистых первом или оставить его из моей sourceSet не очень хорошо. Поскольку Eclipse не любит находить файл, который должен существовать по соглашению.
Есть ли у вас какие-либо предложения по тому, как это решить?
где ваш обходной путь? как я могу применить обходное решение? – inherithandle