Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chris Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

need urgent help with JMF on Mac OS X

Status
Not open for further replies.

abbie10

Programmer
Jun 18, 2003
2
US
Hi,
I am trying to execute the following code:

import java.applet.*;
import java.awt.*;
import java.net.*;
import javax.media.ControllerListener;
import javax.media.Manager;
import javax.media.Player;
import javax.media.ControllerEvent;
import javax.media.RealizeCompleteEvent;
//import javax.media.*;

public class PlayerApplet extends Applet implements ControllerListener {
Player player = null;
public void init() {
setLayout(new BorderLayout());
//String mediaFile = "gogo_mov.mpeg";
String mediaFile = getParameter("FILE");
try {
URL mediaURL = new URL(getDocumentBase(), mediaFile);
player = Manager.createPlayer(mediaURL);
player.addControllerListener(this);
}
catch (Exception e) {
System.err.println("Got exception "+e);
}
}
public void start() {
player.start();
}
public void stop() {
player.stop();
player.deallocate();
}
public void destroy() {
player.close();
}
public synchronized void controllerUpdate(ControllerEvent event) {
if (event instanceof RealizeCompleteEvent) {
Component comp;
if ((comp = player.getVisualComponent()) != null)
add ("Center", comp);
if ((comp = player.getControlPanelComponent()) != null)
add ("South", comp);
validate();
}
}
}

I am getting the following error when I try to run the applet using the appletviewer:

java.lang.NoClassDefFoundError: javax/media/ControllerListener
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:488)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:106)
at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:138)
at java.lang.ClassLoader.loadClass(ClassLoader.java:294)
at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at sun.applet.AppletClassLoader.loadCode(AppletClassLoader.java:463)
at sun.applet.AppletPanel.createApplet(AppletPanel.java:581)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:510)
at sun.applet.AppletPanel.run(AppletPanel.java:288)
at java.lang.Thread.run(Thread.java:491)

I have placed the jmf.jar in the classpath. I think the proble is with the classpath setting but don't know the exact problem.
Can anyone please help me?

Thanks
 
Here is self contained code to get it working. You need to instantiate a listener first :)

import javax.swing.*;
import javax.media.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;

public class WavPlayerPanel extends JPanel {
public Player player;
private Component center;
private Component south;
private JFrame _parent = null;
private URL mediaURL = null;

//instantiation as component
public WavPlayerPanel(String url, boolean autoplay) {
setLayout(null);

if (url!=null && url.length()>0) {
try {
load(url,autoplay);
} catch(Exception e) {
System.out.println("Exception loading: " + e.getMessage());

if (center != null) {
remove(center);
validate();
}
if (south != null) {
remove(south);
validate();
}
}
}
}

public void load(String url, boolean autoplay) throws Exception {
if (player != null) {
player.stop();
}

if(url.indexOf("http")==-1)
url = "file:" + url;

mediaURL = new URL(url);

player = Manager.createPlayer(mediaURL);
ControllerListener listener = new ControllerAdapter() {
//for non application mode, close window after playing media
public void endOfMedia(EndOfMediaEvent e) {
//dispose();
}

public void realizeComplete(RealizeCompleteEvent event) {
Component vc = player.getVisualComponent();
if (vc != null) {
vc.setBounds(0,0,getWidth(),vc.getHeight());
add(vc);
center = vc;
} else {
if (center != null) {
remove(center);
validate();
}
}

Component cpc = player.getControlPanelComponent();
if (cpc != null) {
cpc.setBounds(0,0,getWidth(),cpc.getHeight());
add(cpc);
south = cpc;
} else {
if (south != null) {
remove(south);
validate();
}
}
}
};
player.addControllerListener(listener);
player.realize();
player.prefetch();

if (autoplay)
player.start();


}

public static void main(String args[]) {
//as an application
JFrame frame = new JFrame();
//WavPlayerPanel jplayer = new WavPlayerPanel(" true);
//WavPlayerPanel jplayer = new WavPlayerPanel("./media/031.mpeg", true);
WavPlayerPanel jplayer = new WavPlayerPanel("./media/FASTDANCE - TRANCE CONTROL - atomic_dance_explosion.mp3", false);
jplayer.setBounds(0,0,225,40);
frame.getContentPane().add(jplayer, BorderLayout.CENTER);
//frame.setSize(jplayer.player.getHeight(),jplayer.player.getWidth());
frame.setSize(300,300);
//frame.pack();
frame.validate();
frame.show();
}
}
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top