私は2つのクラス(Play
とeditor
)を持っています。editor
を使用しPlay
ます。Play
いくつかの外部ファイルを使用します。それらに直接対処するために、それらを Eclipse にインポートしました (最初のスクリーンショットでわかるように)。
JAR にこれらのファイルを含めて、それらを操作 (インポート) できるようにしたいと考えています。それは可能ですか?プロジェクトを JAR にエクスポートする際にどのオプションを選択する必要がありますか?
1 に答える
.wav
jar 内のファイルを使用する場合はString path = System.getProperty("user.dir");
、そこから wav ファイルを実行してロードする代わりに、次のようなことを試してください。
InputStream stream = Play.class.getResourceAsStream("/result.wav");
hereから、(コードのように)オブジェクトの代わりにを受け入れるAudioSystem
オーバーロードがあるようです。だからあなたは次のようなものを持つことができます:getAudioInputStream
InputStream
File
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 であり、他に何も実行する必要はありません。