1

私は2つのクラス(Playeditor)を持っています。editorを使用しPlayます。Playいくつかの外部ファイルを使用します。それらに直接対処するために、それらを Eclipse にインポートしました (最初のスクリーンショットでわかるように)。 ここに画像の説明を入力 JAR にこれらのファイルを含めて、それらを操作 (インポート) できるようにしたいと考えています。それは可能ですか?プロジェクトを JAR にエクスポートする際にどのオプションを選択する必要がありますか?

4

1 に答える 1

3

.wavjar 内のファイルを使用する場合はString path = System.getProperty("user.dir");、そこから wav ファイルを実行してロードする代わりに、次のようなことを試してください。

InputStream stream = Play.class.getResourceAsStream("/result.wav");

hereから、(コードのように)オブジェクトの代わりにを受け入れるAudioSystemオーバーロードがあるようです。だからあなたは次のようなものを持つことができます:getAudioInputStreamInputStreamFile

public class Play{
    public AudioInputStream find(String s) throws UnsupportedAudioFileException, IOException{
        // Probably some try catch over the next statement to log the error if `result.wav` is not found.
        InputStream stream = Play.class.getResourceAsStream("/result.wav");
        return AudioSystem.getAudioInputStream(stream); 
    }
}

上記を機能*.wavさせるには、クラスパスに存在するように、すべてのファイルをソース フォルダーにコピーする必要があります。これを行うには、最初に *.wav を移動しますsint/src(その後、必要に応じて適切なwavフォルダーに移動します)。これにより、クラスパスのルートに配置され、so :など/のように参照できるようになります。/result.wav/x_SECOND.wav

作業コード

ここAudioInputStreamからテストするための少しの作業コードを次に示します。

public class A {    
    @Test
    public void testAudioInputStream() throws UnsupportedAudioFileException, IOException {
        InputStream stream = A.class.getResourceAsStream("/result.wav");
        System.out.println(stream != null);
        AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(stream);
        System.out.println(audioInputStream != null);
    }    
}

上記のコードは私にとってはうまく機能trueし、コンソールに2つ表示されました。

テスト プロジェクトを含む GIT ハブ リポジトリ

このzipにプロジェクトをインポートして、コードの動作を確認できるはずです。

「ファットジャー」が必要ですか?

少し話題から外れますが fat jar、プロジェクトの実行に必要なすべての jar を含み、単一の実行可能ファイルをビルドする必要がある場合は、 http://fjep.sourceforge.net/プラグインを使用してファット jar をビルドしてみてください。

を使用して、jar を含む Java プロジェクトをエクスポートできますFile -> Export -> Other -> One Jar Exporter。このように構築された jar は実行可能な jar であり、他に何も実行する必要はありません。

于 2012-08-21T11:05:55.443 に答える