java - 无法在 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/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
的伎俩!
推荐阅读
- postgresql - Postgres 函数将 regexp_matches SETOF 结果转换为 ARRAY
- javascript - 检查用户的浏览器是否不支持javascript
- html - 显示的CSS交替行顺序:表
- c - 结构的大小取决于联合所在的位置
- android - 在模块番石榴错误中发现重复的类 com.google.common
- laravel - 如何查看评级为 1、3 和 5 Laravel 查询的所有记录
- vue.js - 我们可以改变 v-data-table 中选择菜单的样式(颜色)吗,默认 class primary--text 应用于高亮和标签
- r - 对多个列表中的多个变量进行统计测试(小标题)
- linux - 在拍摄照片之前调整网络摄像头设置(v4l2 和 fswebcam)
- c - 在 C 程序中使用汇编函数