1

Maven プロジェクトに取り組んでおり、.wav ファイルを再生してデスクトップ アラートを表示する必要があります。.wav ファイルを単独でテストして、動作することを確認しました。プロジェクト構造にインポートしましたが、ソース ディレクトリにある場合は 46 KB です。プロジェクトで mvn clean install を実行すると、生成されるターゲット ディレクトリに .wav ファイルが含まれますが、そこには 87 kb あります。

これは私が得るエラーです: javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file

log4j ログで生成されたパスを確認するためにロギング ステートメントを入力しましたが、パスは正しいです。これは、mvn クリーン インストールが .wav ファイルの形式または内容を変更していると思わせますが、それを防ぐ方法と最終的な方法がわかりません。

アップデート

コード スニペットを次に示します。

String filename = this.getClass().getResource("/audio/affirmative.wav").getPath();

logger.debug("wav file path: " + filename);

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(filename).getAbsoluteFile());

Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();

何か案は?前もって感謝します!

4

1 に答える 1

2

Maven (変数置換) によってフィルター処理されるディレクトリに wav ファイルを配置した可能性があります。

解決策: フィルタリングされないディレクトリにバイナリ ファイルを配置します。

私のプロジェクトでは、2 つのリソース ディレクトリを作成し始めました。

  • src/main/resources: フィルタリング
  • src/main/resources-bin: フィルタリングされていません

ここで親POMとして使用しているPOMファイルを見て、これを構成する方法を確認できます: http://search.maven.org/remotecontent?filepath=org/softsmithy/softsmithy-parent/2.2/softsmithy -parent-2.2.pom

または、必要に応じて、独自の親 POM の親としても使用できます。

<parent>
    <groupId>org.softsmithy</groupId>
    <artifactId>softsmithy-parent</artifactId>
    <version>2.2</version>
</parent>

このように、リソース構成などをすぐに利用できます。

ただし、親 POM の alle プロジェクト固有の設定を必ずオーバーライドしてください。

これは、実行して確認できますmvn help:effective-pom

于 2013-06-13T20:45:33.517 に答える