java - 无法在Hadoop jar上加载application.properties(NullPointerException)

标签 java hadoop jar

我已经看过各种关于这个问题的答案。他们都不工作。

我有以下代码:

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)
请帮助我解决这个令人沮丧的错误!

最佳答案

发现错误。
hadoop jar检查Hadoop类路径。即使该文件位于Hadoop类路径中,也没有Hadoop用户的读取权限。

一个简单的sudo chmod a+r /etc/hadoop/conf/application.properties就可以了!

关于java - 无法在Hadoop jar上加载application.properties(NullPointerException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55581146/

相关文章:

java - 如何在客户端计算机上测试 JAR 文件的代码签名?

java - 在 Wildfly 10 应用程序中使用 jboss-client.jar 的最佳方法是什么?

java - 使用 Java 创建和编辑 Excel 文档 (.csv)

hadoop - sqoop增量导入命令出错

Java:如何在子进程中调用 prctl()

database - 如何处理非常大的数据?

hadoop - Apache Giraph使用Maven进行编译

java - 在类路径中使用 .jar 中的类

java - 如何使 vaadin 电子表格中的工作表名称选项卡只读

java - 在 Java 中从 URL 解析 XML 时出现 MalformedByteSequenceException