2015-08-24 11 views
1

Я новичок в Java Applets.I установил JMStudio и добавил все файлы .jar в проект, но все еще не работает.Невозможно реализовать метод воспроизведения в Java-апплете, неправильная установка JMF

Я установил .jar файлы в проекте> Свойства> Java сборки Path> Библиотеки

Мои программы Здесь `s:

import java.applet.*; 
import java.awt.Button; 
import java.awt.Graphics; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

public class design extends Applet implements ActionListener 
{ 
    Button play,stop; 
    AudioClip audioClip; 
    public void init(){ 
     play = new Button(" Play in Loop "); 
     add(play); 
     play.addActionListener(this); 
     stop = new Button(" Stop "); 
     add(stop); 
     stop.addActionListener(this); 
     audioClip = getAudioClip(getCodeBase(), "About Time.mid"); 
    } 

@Override 
public void actionPerformed(ActionEvent ae) { 
    Button source = (Button)ae.getSource(); 
     if (source.getLabel() == " Play in Loop "){ 
     audioClip.play(); 
     } 
     else if(source.getLabel() == " Stop "){ 
     audioClip.stop(); 
     } 
    } 

} 

И здесь` s ошибки

java.lang.IllegalAccessError: tried to access class com.sun.media.sound.Printer from class com.sun.media.sound.HeadspaceSoundbank 
at com.sun.media.sound.HeadspaceSoundbank.<init>(HeadspaceSoundbank.java:81) 
at com.sun.media.sound.HsbParser.getSoundbank(HsbParser.java:69) 
at javax.sound.midi.MidiSystem.getSoundbank(MidiSystem.java:535) 
at com.sun.media.sound.SoftSynthesizer.getDefaultSoundbank(SoftSynthesizer.java:711) 
at com.sun.media.sound.SoftSynthesizer.openStream(SoftSynthesizer.java:1150) 
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java:73) 
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java:145) 
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1113) 
at com.sun.media.sound.JavaSoundAudioClip.<init>(JavaSoundAudioClip.java:102) 
at sun.applet.AppletAudioClip.createAppletAudioClip(AppletAudioClip.java:125) 
at sun.applet.AppletAudioClip.<init>(AppletAudioClip.java:66) 
at sun.applet.AppletViewer.getAudioClip(AppletViewer.java:383) 
at java.applet.Applet.getAudioClip(Applet.java:329) 
at java.applet.Applet.getAudioClip(Applet.java:349) 
at com.design.init(design.java:20) 
at sun.applet.AppletPanel.run(AppletPanel.java:434) 
at java.lang.Thread.run(Thread.java:745) 

Я думаю, проблема может заключаться в установке JMF .... но я не знаю точно, где я ошибаюсь.

Пожалуйста, скажите, пожалуйста, точный метод запуска JMF в затмении.

+0

1) Зачем нужен апплет? Если это связано с тем, что учитель указал на это, обратитесь к [Почему учителя CS должны ** останавливаться ** преподавать Java-апплеты] (http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop-учебно-ява-апплеты /). 2) Зачем использовать AWT? См. [Этот ответ] (http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978) по многим причинам, чтобы отказаться от использования AWT с использованием компонентов в пользу Swing. 3) Вам не нужен JMF для воспроизведения MIDI-файла. [Java Sound] (http://stackoverflow.com/tags/javasound/info) может сделать это с Java 1.3! –

ответ

0

Кажется, конфликт библиотеки. Убедитесь, что в пути построения eclipse у вас нет разных версий библиотеки. Посмотрите также другие библиотеки, которые находятся в пути к классам. При запуске приложения в eclipse или другом ide вы можете видеть переменные -D и -classpath, которые используются JVM.

Редактировать: Я запустил апплет из eclipse с помощью jre 8 без дополнительной библиотеки в пути сборки.

java_build_path

и я получил две кнопки после запуска апплета в затмении:

Applet image

возможно изменение JRE и удаление JMF библиотеки можно выполнить апплет.

Отношения