【问题标题】:Playing audio from jar file从 jar 文件中播放音频
【发布时间】:2014-02-05 02:59:43
【问题描述】:

我已经找到了很多关于这个主题的主题,但我仍然无法让它发挥作用。它可以从编译器轻松工作,但不能从 jar 文件中工作。 jar 文件似乎找到了音频文件,但它只是不播放它。

import sun.audio.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

@SuppressWarnings({"serial","restriction"})
public class JarSoundTest1 extends JFrame { 
  JButton button;
  InputStream in;
  AudioStream as;

  public JarSoundTest1() throws Exception {

      JOptionPane.showMessageDialog(null, this.getClass().getResource("blopp.wav"));          

      button = new JButton("Click to Blopp!");
      button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try{
                in = this.getClass().getResourceAsStream("blopp.wav");
                as = new AudioStream (in);
                AudioPlayer.player.start(as);

                JOptionPane.showMessageDialog(null, "try");

            }catch(Exception ex){

                ex.printStackTrace();
                JOptionPane.showMessageDialog(null, "catch");               
            }
        }       
      });
      add(button);    
  }

  public static final void main(String[] args) throws Exception {
      JFrame frame = new JarSoundTest1();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(200, 200);
      frame.setVisible(true);     
  }  
}

每次单击按钮时,JOptionPane 都会显示“尝试”,这表明我假设找到了文件?仍然没有声音播放。我尝试使用放置在 jar 文件内部和外部的音频文件。非常感谢您帮助理解这一点。

【问题讨论】:

  • 注意,使用 javax.sound.sampled 可能比使用 sun 的更好,因为随着时间的推移,这些实现无法保证正确性。

标签: java audio jar


【解决方案1】:

好的,我终于明白了。我不认为这是一个声音问题,我很确定,因为我可以使用与您的代码非常相似的代码来播放 wav,这是 jar 中的一个资源问题,可能非常棘手。我会根据编辑上述代码的实验提出以下建议:

getClass 与 getClassLoader

如果您使用 getClass,则路径必须以正斜杠 / 开头。因此,如果您的 .wav 位于顶层,那么 ./blopp.wav 就是要走的路。如果 .wav 文件被 sun.audio.* 识别,那么这很可能是您需要的唯一调整。

如果您可以在 jar 中找到资源,但听不到音频,请尝试使用不同的 .wav 文件。一些好的wav文件是here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多