【问题标题】:Lombok - value might not have been initialized [duplicate]Lombok - 值可能尚未初始化[重复]
【发布时间】:2020-12-27 17:23:28
【问题描述】:

我正在使用 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;

但它也没有帮助。

【问题讨论】:

  • 不要介意链接的问题报告 NullPointerException,原因与您的问题相同,答案解释了原因(并提供解决方案)。

标签: java lombok intellij-lombok-plugin


【解决方案1】:

这与龙目岛无关。

File inputDirectory = new File(inputDirectory);

那条线不管你怎么切都是错误的。 new File(inputDirectory) 中的 inputDirectory 是对您在此行中声明的 inputDirectory 变量的引用。显然,它还没有初始化。

因此,龙目岛与此无关。

解决办法?容易 - 使用另一个名称,因为这很容易混淆。或者:File inputDirectory = new File(this.inputDirectory); - 消除歧义,确保 javac 理解 inputDirectory 的第二个用法是指该字段,而第一个是指“请为我创建一个名为 inputDirectory 的新局部变量,它会隐藏该字段也名为 inputDirectory” .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 2015-07-04
    • 1970-01-01
    相关资源
    最近更新 更多