[解決済み] 私のURIはなぜ階層化されていないのですか?重複
2022-02-04 07:35:09
質問
リソースフォルダにファイルを置いています。例えば、リソースフォルダからファイルを取得する必要がある場合、私はこのようにします。
File myFile= new File(MyClass.class.getResource(/myFile.jpg).toURI());
System.out.println(MyClass.class.getResource(/myFile.jpg).getPath());
私は テスト と、すべて 動作 !
パスは
/D:/java/projects/.../classes/X/Y/Z/myFile.jpg
しかし jarファイルを作成する場合、, メイヴン :
mvn package
...そして、私のアプリを起動します。
java -jar MyJar.jar
以下のようなエラーが発生しました。
Exception in thread "Thread-4" java.lang.RuntimeException: ხელმოწერის განხორციელება შეუძლებელია
Caused by: java.lang.IllegalArgumentException: URI is not hierarchical
at java.io.File.<init>(File.java:363)
... で、ファイルのパスが :
file:/D:/java/projects/.../target/MyJar.jar!/X/Y/Z/myFile.jpg
この例外は、リソースフォルダからファイルを取得しようとしたときに発生します。この行で。なぜですか?なぜJARファイルにそのような問題があるのでしょうか?あなたはどう思いますか?
リソースフォルダのパスを取得する他の方法はありますか?
どのように解決するのですか?
を使用する必要があります。
getResourceAsStream(...);
リソースが jar/war またはその他の単一ファイルパッケージとしてバンドルされている場合。
つまり、jarはたくさんのファイルをまとめた1つのファイル(zipファイルのようなもの)なのです。Osの視点からは、これは1つのファイルであり、もしあなたが
part of the file
(画像ファイル)をストリームとして使用する必要があります。
関連
-
[解決済み】このコンパイルユニットは名前付きモジュールに関連しているため、名前付きパッケージeclipseを宣言する必要があります。
-
[解決済み] hibernate のプロパティが見つかりません。
-
[解決済み】純粋なJUnitテストにVisibleForTestingを使用する方法
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] B "の印刷が "#"の印刷より劇的に遅いのはなぜですか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
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の".class期待値"
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み] 二項演算子「&」のオペランド型がおかしい java
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】keytoolエラー 鍵屋が改ざんされたか、パスワードが不正確だった場合
-
[解決済み】Gradleがtools.jarを見つけ出さない
-
[解決済み】Javaを使用するSelenium - ドライバの実行ファイルのパスは、webdriver.gecko.driverシステムプロパティで設定する必要があります。
-
[解決済み】Javaで文字列をコピーするにはどうしたらいいですか?
-
[解決済み】Javaメソッドスタブ
-
[解決済み】フォルダに書き込もうとすると「java.nio.file.AccessDeniedException」が発生する件