Полагаю, вы могли бы использовать несколько эвристик и подходов для получения правильного имени исходного файла. Можно было бы прочитать файл .class
напрямую и получить оттуда имя исходного файла:
ClassReader cr = new ClassReader(this.getClass().getName()); // Just so that we have some class to read here.
ClassNode cn = new ClassNode();
cr.accept(cn, ClassReader.SKIP_FRAMES | ClassReader.SKIP_CODE);
LOGGER.info("class {} source file: {}", cn.name, cn.sourceFile);
В приведенном выше примере используется ASM .
Другой может быть возврат к чему-то вроде @kotlin.Metadata
аннотации.