JAR 的 target/classes 文件夹中不存在文件,本应从资源项目文件夹中读取
File does not exist in target/classes folder of JAR, meant to be read from resources project folder
我正在努力阅读。来自我已部署代码的 Java 项目中资源文件夹中的配置。我可以从我的本地笔记本电脑读取,但在部署为 JAR .manifest 文件后,它说路径不存在。
所以我的 Java maven 项目 str: src/main/java/..
和配置路径如下:
Java 读取此配置的代码,其中 file.exists()
总是 returns false。
试用 1:配置路径为:src/main/resources/config.yaml
.
File configPath = new File(Objects.requireNonNull(getClass().getClassLoader().getResource("config.yaml")).getFile());
if (!configPath.exists()) {
Log("ERROR", "Config file does not exist "); // this is printed
}
试用2:配置路径为src/main/resources/feed/configs/config.yaml
.
时
File dir = new File(Objects.requireNonNull(getClass().getClassLoader().getResource("feed/configs")).getFile());
if (!dir.exists()) {
Log("ERROR", "Config folder does not exist, "ERROR"); // THIS IS PRINTED
return;
}
File[] configFiles = configPath.listFiles(); // NOT EXECUTED AS ABOVE IS RETURNED
既然你已经添加了 maven 标签,我假设你正在使用 maven。
由于 .yaml 位于您应该使用的资源文件夹中 getResourceAsStream()
/src/main/resources/config.yaml:
first: value1
second: value2
读取文件及其内容:
import java.util.Properties;
import java.io.InputStream;
import java.io.IOException;
public class Example {
InputStream inputStream = null;
final Properties properties = new Properties();
public Example() {
try {
inputStream =
this.getClass().getClassLoader().getResourceAsStream("config.yaml");
properties.load(inputStream);
} catch (IOException exception) {
LOG("ERROR", "Config file does not exist ");
} finally {
if (inputStream != null){
try {
inputStream.close();
} catch (Exception e) {
LOG("ERROR", "Failed to close input stream");
}
}
}
}
public printValues(){
LOG("INFO", "First value is: " + properties.getProperty("first"));
}
}
我正在努力阅读。来自我已部署代码的 Java 项目中资源文件夹中的配置。我可以从我的本地笔记本电脑读取,但在部署为 JAR .manifest 文件后,它说路径不存在。
所以我的 Java maven 项目 str: src/main/java/..
和配置路径如下:
Java 读取此配置的代码,其中 file.exists()
总是 returns false。
试用 1:配置路径为:src/main/resources/config.yaml
.
File configPath = new File(Objects.requireNonNull(getClass().getClassLoader().getResource("config.yaml")).getFile());
if (!configPath.exists()) {
Log("ERROR", "Config file does not exist "); // this is printed
}
试用2:配置路径为src/main/resources/feed/configs/config.yaml
.
File dir = new File(Objects.requireNonNull(getClass().getClassLoader().getResource("feed/configs")).getFile());
if (!dir.exists()) {
Log("ERROR", "Config folder does not exist, "ERROR"); // THIS IS PRINTED
return;
}
File[] configFiles = configPath.listFiles(); // NOT EXECUTED AS ABOVE IS RETURNED
既然你已经添加了 maven 标签,我假设你正在使用 maven。
由于 .yaml 位于您应该使用的资源文件夹中 getResourceAsStream()
/src/main/resources/config.yaml:
first: value1
second: value2
读取文件及其内容:
import java.util.Properties;
import java.io.InputStream;
import java.io.IOException;
public class Example {
InputStream inputStream = null;
final Properties properties = new Properties();
public Example() {
try {
inputStream =
this.getClass().getClassLoader().getResourceAsStream("config.yaml");
properties.load(inputStream);
} catch (IOException exception) {
LOG("ERROR", "Config file does not exist ");
} finally {
if (inputStream != null){
try {
inputStream.close();
} catch (Exception e) {
LOG("ERROR", "Failed to close input stream");
}
}
}
}
public printValues(){
LOG("INFO", "First value is: " + properties.getProperty("first"));
}
}