我已经看过各种关于这个问题的答案。他们都不工作。
我有以下代码:
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/conf
和target/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/