[解決済み] Java JARファイル内のリソースへのパスを取得する方法
2022-04-21 12:02:09
質問
リソースへのパスを取得しようとしているのですが、うまくいきません。
これは(IDEとJARの両方で)動作しますが、この方法ではファイルへのパスは取得できず、ファイルの内容のみが取得されます。
ClassLoader classLoader = getClass().getClassLoader();
PrintInputStream(classLoader.getResourceAsStream("config/netclient.p"));
こうすれば
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("config/netclient.p").getFile());
その結果、次のようになります。
java.io.FileNotFoundException: file:/path/to/jarfile/bot.jar!/config/netclient.p (No such file or directory)
リソースファイルへのパスを取得する方法はありますか?
どのように解決するのですか?
これは意図的なものです。 "file"の中身は、ファイルとして利用できない可能性があります。 JARファイルや他の種類のリソースの一部である可能性があるクラスやリソースを扱っていることを忘れないでください。クラスローダーは、リソースへのファイルハンドルを提供する必要はありません。例えば、jar ファイルは、ファイルシステム内で個々のファイルに展開されていないかもしれません。
java.io.Fileを取得してできることは、java.io.Fileがどうしても必要な場合は、ストリームを一時ファイルにコピーして同じことをすればよいのではと思います。
関連
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] Pythonでパスから拡張子なしでファイル名を取得する方法は?
-
[解決済み】Javaではfinallyブロックは必ず実行されるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java エラー報告 スレッド "main" での例外 java.util.NoSuchElementException
-
スタイルが読み込まれず、ブラウザコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
ファインバグタイプ
-
jd-gui Java Exceptionが発生しました。
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 0 at One1.main(One1.java:3)
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 4 at text.Division.main(Divisi
-
xxx:jarのアーティファクトディスクリプタの読み込みに失敗した問題は解決しました。
-
自動配線された依存性のインジェクションに失敗しました。
-
HttpClientがGZIP形式でない場合の対処法
-
[解決済み] Javaにパス結合メソッドはありますか?重複