首页 > 解决方案 > 无法在 Hadoop jar 上加载 application.properties (NullPointerException)

问题描述

我已经查看了这个问题的各种答案。它们都不起作用。

我有以下代码:

import java.util.Properties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.FileNotFoundException;
import java.io.IOException;

public class ApplicationConfig {

    private static Logger LOG;

    private String appConfigFileLocation = "application.properties"; 
    private Properties appConfig;

    private static ApplicationConfig instance;

    public static ApplicationConfig getInstance() {
        if(instance == null) {
            instance = new ApplicationConfig();
        }

        return instance;
    } 

    private ApplicationConfig() {
        LOG = LoggerFactory.getLogger(this.getClass().getSimpleName());

        appConfig = new Properties();

        try {
            LOG.info("Reading config from " + appConfigFileLocation);

            appConfig.load(ClassLoader.getSystemResourceAsStream(appConfigFileLocation));

            LOG.info("Done reading config from " + appConfigFileLocation);
        } catch (FileNotFoundException e) {
            LOG.error("Encountered FileNotFoundException while reading configuration: " + e.getMessage());
            throw new RuntimeException(e);
        } catch (IOException e) {
            LOG.error("Encountered IOException while reading configuration: " + e.getMessage());
            throw new RuntimeException(e);
        }
    }
}

我创建了一个 JAR 文件。JAR 文件application.properties位于根目录。我还将application.properties文件复制/etc/hadoop/conftarget/classes/目录中。

我使用hadoop jar命令来执行代码。

但我不断收到错误:java.lang.NullPointerException at java.util.Properties$LineReader.readLine(Properties.java:434)

请帮助我解决这个令人沮丧的错误!

标签: javahadoopjar

解决方案


发现错误。

hadoop jar检查 Hadoop 类路径。即使该文件在 Hadoop 类路径中,它也没有 Hadoop 用户的读取权限。

一个简单sudo chmod a+r /etc/hadoop/conf/application.properties的伎俩!


推荐阅读