我正在创建一个应用程序(hive udf),为此我创建了一个包含所有依赖项的胖jar。由于这个应用程序将分布在多个节点上,我需要将我的属性文件也打包到jar中。
问题 我从另一个jar中调用的一个函数需要一个参数,一个属性文件路径。我把这个属性文件打包在jar里,只传了名字。但是,它抱怨说没有找到这个文件。
编码。
c = new ABC("classification.props");
在jar里面的函数 美国广播公司 读取属性文件的类
public static Properties getProperties(String propFile) {
Properties props = new Properties();
try {
props.load(new FileInputStream(propFile));
return props;
} catch (IOException var3) {
var3.printStackTrace();
}
}
这个ABC是来自另一个罐子.不过我是在创建一个胖罐子,所以应该无所谓。分类.道具 是在应用程序的根目录下。
在 getProperties
方法是在寻找文件系统中的一个文件。那不是你的文件所在的地方 -- 你的文件在 JAR 中。
如果你能改变getProperties`方法,你可以告诉它把文件作为类路径资源来读取。
如果你不能修改 getProperties
方法,你可以将属性复制到文件系统中(使用链接答案中的技术将其加载为类路径资源,然后写入临时目录)。