关于播放MP3的程序

时间:2021-04-28 00:04:29
用Java写的一个播放MP3程序出现以下错:
run:
java.lang.NoClassDefFoundError: music/Test (wrong name: music/test)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: music.Test.  Program will exit.
Exception in thread "main" 
Exception in thread "main" Java Result: 1
jmf包都跟jdk安装都在同一个包了。语法也没错,就运行时出错。

10 个解决方案

#1


这是我测试的代码,运行后就报错了
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
import java.io.File;
import java.io.IOException;
import javax.media.*;

class test
{
    public static void main(String[] args)
    {
        frame myframe=new frame();
        myframe.setSize(500,500);
        myframe.setVisible(true);
        myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myframe.setLocation(500,500);
    }
}

class frame extends JFrame implements ControllerListener {

Player myPlayer=null;
URL url=null;
File file=new File("F:\\a.mp3");
Component vc,cc;
Panel mypanel=new Panel();

public frame()
{
  try {
   url=file.toURI().toURL();
  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  try {
   myPlayer=Manager.createPlayer(url);
  } catch (NoPlayerException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

  this.add(mypanel);
  myPlayer.addControllerListener(this);
  myPlayer.prefetch();

}
  public   void   controllerUpdate   (ControllerEvent   e)
  {
   //如果是Player达到prefect状态,则开始
   if   (e   instanceof   PrefetchCompleteEvent)
       {
       myPlayer.start   ();
       return;
       }
   //如果是已经完成实例,则加入控制面板,视频面板
       if   (e   instanceof   RealizeCompleteEvent)
       {
       vc   =   myPlayer.getVisualComponent   ();
       if   (vc   !=   null)
          add(vc);
       cc   =   myPlayer.getControlPanelComponent   ();
       if   (cc   !=   null)
        add(cc,   BorderLayout.SOUTH);
      pack();
       }
       }
}

#2


你是怎么运行程序的?用命令行?

#3


jmf写mp3播放器需要额外的支持mp3播放的插件jar包。你加了吗?

#4


最快的JAVA版的MP3解码器,开源的。
http://lfp001.iteye.com/blog/739585

呵呵~~

#5


本人用netbeans编译的,运行时出现在上面的错误,

#6


引用 3 楼 nobullet 的回复:
jmf写mp3播放器需要额外的支持mp3播放的插件jar包。你加了吗?
javamp3-1_0.zip是不是这个,这个是sun网上下载的,这个只有78k多

#7


引用 6 楼 hlikun 的回复:
引用 3 楼 nobullet 的回复:
jmf写mp3播放器需要额外的支持mp3播放的插件jar包。你加了吗?
javamp3-1_0.zip是不是这个,这个是sun网上下载的,这个只有78k多

http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-client-419417.html#javamp3-1_0-oth-JPR

Java MP3 Plugin 1.0部分

说这个,看你的代码,没有使用到这个插件。

#8


或许是这样把

#9


也就是说我不需要导入那个插件包了,因为没用到?、?

#10


引用 9 楼 hlikun 的回复:
也就是说我不需要导入那个插件包了,因为没用到?、?

JMF里面有一个PlugInManager类,我理解它是用来管理各种解码插件的,需要把mp3解码插件jar包加入到PlugInManager管理,才能正常播放mp3插件。不过我不知道我理解的有没有误,我写的小例子确实能播放mp3。

#1


这是我测试的代码,运行后就报错了
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
import java.io.File;
import java.io.IOException;
import javax.media.*;

class test
{
    public static void main(String[] args)
    {
        frame myframe=new frame();
        myframe.setSize(500,500);
        myframe.setVisible(true);
        myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myframe.setLocation(500,500);
    }
}

class frame extends JFrame implements ControllerListener {

Player myPlayer=null;
URL url=null;
File file=new File("F:\\a.mp3");
Component vc,cc;
Panel mypanel=new Panel();

public frame()
{
  try {
   url=file.toURI().toURL();
  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  try {
   myPlayer=Manager.createPlayer(url);
  } catch (NoPlayerException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

  this.add(mypanel);
  myPlayer.addControllerListener(this);
  myPlayer.prefetch();

}
  public   void   controllerUpdate   (ControllerEvent   e)
  {
   //如果是Player达到prefect状态,则开始
   if   (e   instanceof   PrefetchCompleteEvent)
       {
       myPlayer.start   ();
       return;
       }
   //如果是已经完成实例,则加入控制面板,视频面板
       if   (e   instanceof   RealizeCompleteEvent)
       {
       vc   =   myPlayer.getVisualComponent   ();
       if   (vc   !=   null)
          add(vc);
       cc   =   myPlayer.getControlPanelComponent   ();
       if   (cc   !=   null)
        add(cc,   BorderLayout.SOUTH);
      pack();
       }
       }
}

#2


你是怎么运行程序的?用命令行?

#3


jmf写mp3播放器需要额外的支持mp3播放的插件jar包。你加了吗?

#4


最快的JAVA版的MP3解码器,开源的。
http://lfp001.iteye.com/blog/739585

呵呵~~

#5


本人用netbeans编译的,运行时出现在上面的错误,

#6


引用 3 楼 nobullet 的回复:
jmf写mp3播放器需要额外的支持mp3播放的插件jar包。你加了吗?
javamp3-1_0.zip是不是这个,这个是sun网上下载的,这个只有78k多

#7


引用 6 楼 hlikun 的回复:
引用 3 楼 nobullet 的回复:
jmf写mp3播放器需要额外的支持mp3播放的插件jar包。你加了吗?
javamp3-1_0.zip是不是这个,这个是sun网上下载的,这个只有78k多

http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-client-419417.html#javamp3-1_0-oth-JPR

Java MP3 Plugin 1.0部分

说这个,看你的代码,没有使用到这个插件。

#8


或许是这样把

#9


也就是说我不需要导入那个插件包了,因为没用到?、?

#10


引用 9 楼 hlikun 的回复:
也就是说我不需要导入那个插件包了,因为没用到?、?

JMF里面有一个PlugInManager类,我理解它是用来管理各种解码插件的,需要把mp3解码插件jar包加入到PlugInManager管理,才能正常播放mp3插件。不过我不知道我理解的有没有误,我写的小例子确实能播放mp3。