我不知道为什么我无法读取与我的班级处于同一级别的配置文件。我在下面尝试了两个代码,但两个输入流都是空的。
public MyClass
public void getConfigurations()
{
String fileName = "myFile.conf";
InputStream in = this.getClass().getResourceAsStream(fileName);
InputStream inNew = this.getClass().getClassLoader().getResourceAsStream(fileName);
System.out.println(in);
System.out.println(inNew);
}
public static void main(String[] arg){
MyClass myClass = new MyClass();
myClass.getConfigurations();
}
}
输出结果为:
null
null
这是我的目录
MyProject
-src
-com
-test
-MyClass.java
-myFile.conf
-lib
我打算将这个类打包成一个可执行的jar文件,所以我希望它可以在windows和linux中工作。 当我打包jar文件时,我希望配置文件与我的类处于同一级别。
我错过了什么吗?
答案 0 :(得分:0)
如果您不使用绝对路径(以/
开头的路径),在这种情况下您将无法获取文件位置。
因为您执行.class
文件,而不是.java
文件。如果您使用相对路径在另一个文件夹中构建类,则路径基于.class
文件的位置。
尝试将类文件放在与java文件相同的目录中。我想你现在把它们放在build
文件夹中。
或者,尝试让它们像/src/com/test
一样。这是绝对的道路。