それでゲームを作っていて、その効果音を作りたいと思ったんです。クラスファイルと(およびwavオーディオファイル)をjarファイルにパッケージ化するまでは、サウンドを問題なく再生できますが、ファイルが見つからないことがわかります。ファイルを取得するために使用getClass().getResource("sounds/enemyExplode.wav")
しています。私が使用すべき別の方法はありますか?前もって感謝します!
3 に答える
クラスローダーのgetResource()メソッドは、クラスパス内のリソースを操作します。JAR の次の場所にサウンドがある場合:
/sounds/enemyExplode.wav
次に、その呼び出しで (上記と同様に) パスの前に先頭のスラッシュを使用する必要があります。
JAR ファイルは実際にはファイル システムのパッケージ化されたバージョン (zip と同じ形式) にすぎず、クラス ローダーはファイル システムの場合と同様に動作することを忘れないでください。
jar 内では、getResourceAsStream() を使用する方がうまく機能することを学びました。AudioInputStream を使用している場合は、同様に機能します。
AudioInputStream ais = AudioSystem.getAudioInputStream
(Sound.class.getResourceAsStream(fileName));
そして、これはファイル名がどのように見えるかです(サウンドベース、あなたの場合は「サウンド」です):
"/" + soundbase + "/" + file.wav
数年前にオンラインで見つけた完全に機能するサウンドクラスがあり、非常にうまく機能しています。少し変更しましたが、投稿してほしい場合は、ほとんどのシナリオで機能するはずです。
まず、サウンドが実際に jar ファイルにパッケージ化されていることを確認してください。zip をサポートする任意のアーカイバーで jar ファイルを開くことができます。
次に、blabla.getClass().getResources("sounds")
blabla のクラス パスに対して操作を呼び出すと、blabla が含まれる完全なパッケージ名が "sound" の先頭に追加され、jar ファイル内の完全なパスが解決されます。
絶対パスを指定したい場合は、パスの前にスラッシュを追加してください:blabla.getClass().getResources("/sound")