1

そこで、javafx Media クラスの新しいインスタンスを作成しています。

new Media("file://" + <path>);

私が抱えている問題は、Eclipse にアタッチされたクラス フォルダー ("/music/launcher.wav") へのパスを作成する必要があることです。以下を使用して、Eclipse で動作させることができます。

this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath()

メソッドを追加してから .replaceAll("/bin/com/faris/game", "") を追加しますが、これは Eclipse Debug の修正であり、実際にエクスポートされた jar ファイルではありません。エクスポートされた jar ファイル内のクラス フォルダーの場所を取得するにはどうすればよいですか。

4

1 に答える 1

3

この方法:

this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath()

jarファイルの場所を返します(スペースの問題については、ここを確認してくださいHow to get the path of a running JAR file?).jarの場所を取得した後、リソースが必要です.com/music/launcher.wav(com.musicパッケージ)、プログラムでリソースにアクセスするには、.jar の場所を使用し、この場所にリソースの場所を次のように追加する必要があります。

String resources = "/com/music/launcher.wav";
this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath()+resources;

リソースをライブラリとして追加して ZIP として圧縮することもできますが、コードを介して使用するために解凍する必要があります (難しいことではありませんが、さらに複雑です)。リソースと同じ方法で lib フォルダーにアクセスできます。次のように String リソースを置き換えるだけです。

String resoruces = "/lib/launcher.zip"

あなたがそれを機能させることができるかどうか教えてください、よろしく。

于 2013-05-28T15:55:57.627 に答える