Lombok - 值可能尚未初始化

Lombok - value might not have been initialized

我正在使用 Lombok(我安装了插件并且还重新启动了 IDE),但是我收到了一个奇怪的错误。这是我的代码:

@RequiredArgsConstructor
@Slf4j
@Service
@Profile("parser")
public class ParserExecutorService implements CommandLineRunner {

    @Value("${input.directory}")
    String inputDirectory;

    @Override
    public void run(String... args) throws Exception {
        getLogFiles();
    }

    public void getLogFiles() {

        File inputDirectory = new File(inputDirectory);

最后一行报错:

Value 'inputDirectory' might not have been initialized

然而,当我提供一个普通字符串时,即:

File inputDirectory = new File("c:/temp");

然后我在其下方打印“inputDirectory”,然后在控制台中以正确的值显示它。

那么,到底为什么在使用这个 属性 时会抛出这个错误?

我尝试将其设置为

private final String inputDirectory;

但也无济于事。

这与 lombok 无关。

File inputDirectory = new File(inputDirectory);

无论您如何分割,该行都是错误的。 new File(inputDirectory) 中的 inputDirectory 是对您在此行中声明的 inputDirectory 变量的引用。显然,还没有初始化。

因此,lombok与此无关。

修复?简单 - 使用另一个名称,因为这会造成混淆。或者: File inputDirectory = new File(this.inputDirectory); - 消除歧义,确保 javac 理解 inputDirectory 的第二个用法是指字段,而第一个是指 'please make me a new local variable named inputDirectory that shadows the field also named inputDirectory'.