初め:
私は知っています、この質問はすでに約100回尋ねられました. 私は知っています、誰かがすでに正しい答えを出している可能性があります。
とにかく、これをもう一度尋ねなければなりません。私のために働く解決策が見つかりませんでした。ごめん。
私はJavaでゲームを書いています。もちろん、サウンドや画像などのパッケージ (フォルダー) もたくさんあります。ただし、これらのフォルダーはそれぞれ可変サイズです。だから私はそのようなフォルダの内容をリストに動的に保存したいと思っています。
通常、私はこれを作っていました:
File f[] = new File(getClass.getResource("/home/res/").toURI()).listFiles();
これで、このファイル オブジェクトを繰り返し処理して、各ファイルを保存できます。完全。本当に?
いいえ。このプロジェクトを jar アーカイブに抽出すると、失敗します。これはすべて、uri が「階層的」ではないか、このようなものではないためです。この例外を参照してください。
C:\Users\Administrator\Desktop>java -jar Homework.jar
java.lang.IllegalArgumentException: URI is not hierarchical
at java.io.File.<init>(Unknown Source)
at homework.moonface.src.Moonface.loadSounds(Moonface.java:94)
at homework.moonface.src.Moonface.<init>(Moonface.java:55)
at control.Overview.main(Overview.java:16)
わかりました。このパスを取得して、手動でファイル オブジェクトに追加する必要があります。(new File("path"); しかし...これは機能しません。入力が正しく書き込まれていないという既知のエラーが発生するか、リソース URL から "file:" を切り取ろうとするとエラーが発生します、jar では「jar:file:」ではなく「file:」であるため、壊れますが、jar:file: を切り取ると、null になります。
したがって、これを重複としてマークしないでください。これについて簡単に説明してください。それは、解決策ではない他の解決策を理解していない他の何千人もの人々を助けるでしょう.