[英]how to build a jar with the resource file by intellij 2020 or terminal or maven plugins
這是我正在讀取資源文件的簡單應用程序,它工作正常:-
public class App {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader =
new BufferedReader(
new FileReader(
Objects.requireNonNull(
Objects.requireNonNull(
App.class.getClassLoader().getResource("file.txt")
).getFile()
)
)
);
String line = "";
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
}
}
我想用資源文件制作一個可執行的 jar 文件。 我遵循這個。 不幸的是,當我運行 jar 時它找不到。 錯誤:- ReadFileExample.jar./file.txt(沒有這樣的文件或目錄),實際上,我不需要使用 IDE 更容易從終端或 Z402C5D9AF6B437174DZ402C5D9AF6B437174DZ402C 插件請讓我知道如何通過 IDE 或終端或任何 maven 插件將我的資源文件添加到 jar 中?
new FileReader(
這一點意味着它永遠不會起作用。 FileReader 讀取文件。 而且只有文件。 由此得名。 您在開發期間“幸運”地工作,因為此時資源是一個實際文件。
不過也有好消息。 您的代碼非常復雜,可以變得更簡單:
.getClassLoader().getResource(...)
比.getResource
更多的代碼和更糟糕的代碼。 getCL 在特殊情況下可以返回 null。 一定要調整參數; 它現在與您的 class 所在的位置相關,您可以通過在前面添加一個斜杠來返回“從根目錄”。把它們放在一起:
try (var raw = App.class.getResourceAsStream("/file.txt");
var in = new BufferedReader(new InputStreamReader(raw, StandardCharsets.UTF_8))) {
String line = "";
while ((line = in.readLine()) != null) {
// process line here.
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.