我的项目结构如下:
MyModule - >类 - > SerPkg ---> myclass.class
MyModule - > src - > config ---> config.properties
MyModule - > src - > SerPkg ---> myclass.java
我正在尝试使用以下代码访问此处的config.properties
文件,但我发现找不到文件异常。
InputStream in = new FileInputStream("../../src/config/config.properties");
我尝试了下面的代码来找出当前的Dir,我发现具有类文件的classes文件夹是当前文件夹。我试过以下事情:
String current = new java.io.File( "." ).getCanonicalPath();
System.out.println("Current dir:"+current);
String currentDir = System.getProperty("user.dir");
System.out.println("Current dir using System:" +currentDir);
System.out.println("Working Directory = " +
System.getProperty("user.dir"));
// all above cmds give "MyModule" as current dir
System.out.println("Path:"+this.getClass().getClassLoader().getResource("").getPath());
// above last cmd gives "classes" as current dir
我无法从类文件夹或MyModule文件夹中访问config.properties
文件作为当前目录。
答案 0 :(得分:0)
您有两个选择:
<强> 1。只读属性
如果这些是用户无法修改的某些内部属性,请使用此方法。这可能还包括用户应该能够修改的属性的默认值。
将这些属性文件打包在JAR中(Maven通常位于src / main / resources下的某个位置)并使用MyClass.class.getResourceAsStream(...)
<强> 2。用户在部署后应该能够配置的属性
打包应用程序时,必须将这些配置文件与JAR文件一起打包。因此,文件很可能不在&#34; src&#34;目录了。您可能必须找出主JAR所在的位置,以创建已部署配置文件的绝对路径。 使用Maven,您可以使用copy-resources goal of the Maven Resources Plugin在主项目中生成适当的布局,例如用于打包应用程序的Maven Assmbly插件。