При создании файла ресурсов во время компиляции с использованием javax.annotation.processing.Processor
невозможно создать файлы с пробелами в имени файла.
Упрощенный код для воспроизведения проблемы:
public class SampleAnnotationProcessor extends AbstractProcessor {
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment env) {
for (Element element : env.getElementsAnnotatedWith(SampleAnnotation.class)) {
FileObject resource = processingEnv.getFiler()
.createResource(StandardLocation.CLASS_OUTPUT, "configs.generated", "file name with spaces.xml", element);
// ...
}
return true;
}
}
На jdk1.8.0_212.jdk
происходит сбой:
java.lang.IllegalArgumentException: Invalid relative name: file name with spaces.xml
Поскольку такой ресурс будет просто отлично упакован в jar, если он присутствует в src/resources
, я предполагаю, что то же самое должно быть возможно при автоматическом также генерируется.
Есть ли способ избежать пробелов или сделать что-то еще для генерации таких файлов во время компиляции?