当前位置: 代码迷 >> J2SE >> javax.sound.sampled.UnsupportedAudioFileException: could not get audio
  详细解决方案

javax.sound.sampled.UnsupportedAudioFileException: could not get audio

热度:589   发布时间:2016-04-24 12:10:40.0
jar到底如何加入classpath啊
首先我觉得似懂非懂 我先说下自己的理解

类似tools.jar 在环境变量里添加.;%JAVA_HOME%\lib\tools.jar;

我刚在看一个mp3的程序 需要第三方的接口支持 很多教程说需要加入mp3spi这里的三个jar 分别为jl1.0 mp3spi1.9.4 和tritonus_share 都是jar文件


然后我复制了网上一个程序 貌似也是对的 把这三个文件放在java和编译好的class文件一起 因为环境变量里有"." 应该是指当前文件夹啊 和class一起的啊 因为可以运行啊

程序源码:
------------------------------------
import java.awt.BorderLayout;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.List;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;

public class MusicPlayer extends Frame {
boolean isStop = true;// 控制播放线程
boolean hasStop = true;// 播放线程状态

String filepath; // 播放文件目录
String filename; // 播放文件名称
AudioInputStream audioInputStream; // 文件流
AudioFormat audioFormat; // 文件格式
SourceDataLine sourceDataLine; // 输出设备

List list;// 文件列表
Label labelfilepath; // 播放目录显示标签
Label labelfilename; // 播放文件显示标签

public MusicPlayer() {
  // 设置窗体属性
  setLayout(new BorderLayout());
  setTitle("MP3音乐播放器");
  setSize(350, 370);

  // 建立菜单栏
  MenuBar menubar = new MenuBar();
  Menu menufile = new Menu("文件");
  MenuItem menuopen = new MenuItem("打开", new MenuShortcut(KeyEvent.VK_O));
  menufile.add(menuopen);
  menufile.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
  open();
  }
  });
  menubar.add(menufile);
  setMenuBar(menubar);

  // 文件列表
  list = new List(10);
  list.addMouseListener(new MouseAdapter() {
  public void mouseClicked(MouseEvent e) {
  // 双击时处理
  if (e.getClickCount() == 2) {
  // 播放选中的文件
  filename = list.getSelectedItem();
  play();
  }
  }
  });
  add(list, "Center");

  // 信息显示
  Panel panel = new Panel(new GridLayout(2, 1));
  labelfilepath = new Label("播放目录:");
  labelfilename = new Label("播放文件:");
  panel.add(labelfilepath);
  panel.add(labelfilename);
  add(panel, "North");

  // 注册窗体关闭事件
  addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent e) {
  System.exit(0);
  }
  });
  setVisible(true);
}

// 打开
private void open() {
  FileDialog dialog = new FileDialog(this, "Open", 0);
  dialog.setVisible(true);
  filepath = dialog.getDirectory();
  if (filepath != null) {
  labelfilepath.setText("播放目录:" + filepath);

  // 显示文件列表
  list.removeAll();
  File filedir = new File(filepath);
  File[] filelist = filedir.listFiles();
  for (File file : filelist) {
  String filename = file.getName().toLowerCase();
  if (filename.endsWith(".mp3") || filename.endsWith(".wav")) {
  相关解决方案