私は2つのクラス(Playとeditor)を持っています。editorを使用しPlayます。Playいくつかの外部ファイルを使用します。それらに直接対処するために、それらを Eclipse にインポートしました (最初のスクリーンショットでわかるように)。
JAR にこれらのファイルを含めて、それらを操作 (インポート) できるようにしたいと考えています。それは可能ですか?プロジェクトを JAR にエクスポートする際にどのオプションを選択する必要がありますか?
1 に答える
.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 であり、他に何も実行する必要はありません。