Java-Midi-Synthesizer funktioniert nicht
lima-city → Forum → Programmiersprachen → Java
bit
code
entchen
holen
idee
import
installation
installieren
melde
melodie
native
note
partitur
problem
run
synthesizer
system
update
url
zeile
- 
    
    Hallo zusammen,
 
 ich wollte mal mit Java Alle meine Entchen spielen, und bekomme diese schöne Meldung:
 Exception in thread "main" java.lang.IllegalAccessError: class com.sun.media.sound.AbstractPlayer cannot access its superclass com.sun.media.sound.AbstractMidiDevice 
 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$100(Unknown Source)
 at java.net.URLClassLoader$1.run(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 java.lang.ClassLoader.loadClass(Unknown Source)
 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$100(Unknown Source)
 at java.net.URLClassLoader$1.run(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 java.lang.ClassLoader.loadClass(Unknown Source)
 at com.sun.media.sound.MixerSequencerProvider.getDeviceInfo(MixerSequencerProvider.java:28)
 at javax.sound.midi.MidiSystem.getFirstDevice(Unknown Source)
 at javax.sound.midi.MidiSystem.getFirstDevice(Unknown Source)
 at javax.sound.midi.MidiSystem.getFirstDevice(Unknown Source)
 at javax.sound.midi.MidiSystem.getDefaultDevice(Unknown Source)
 at javax.sound.midi.MidiSystem.getDefaultDeviceWrapper(Unknown Source)
 at javax.sound.midi.MidiSystem.getSynthesizer(Unknown Source)
 at Entchen.playAlleMeineEntchen(Entchen.java:25)
 at Entchen.main(Entchen.java:53)
 
 
 Es liegt wohl an dieser Zeile:
 synth = MidiSystem.getSynthesizer();
 
 Der gesammte Code:
 import javax.sound.midi.*; public class Entchen { private static void playAlleMeineEntchen() throws Exception { //Partitur {{Tonhoehe, DauerInViertelNoten, AnzahlWdh},...} final int DATA[][] = { {60, 1, 1}, //C {62, 1, 1}, //D {64, 1, 1}, //E {65, 1, 1}, //F {67, 2, 2}, //G,G {69, 1, 4}, //A,A,A,A {67, 4, 1}, //G {69, 1, 4}, //A,A,A,A {67, 4, 1}, //G {65, 1, 4}, //F,F,F,F {64, 2, 2}, //E,E {62, 1, 4}, //D,D,D,D {60, 4, 1} //C }; //Synthesizer öffnen und Receiver holen Synthesizer synth = MidiSystem.getSynthesizer(); synth.open(); Receiver rcvr = synth.getReceiver(); //Melodie spielen ShortMessage msg = new ShortMessage(); for (int i = 0; i < DATA.length; ++i) { for (int j = 0; j < DATA[i][2]; ++j) { //Anzahl Wdh. je Note //Note an msg.setMessage(ShortMessage.NOTE_ON, 0, DATA[i][0], 64); rcvr.send(msg, -1); //Pause try { Thread.sleep(DATA[i][1] * 400); } catch (Exception e) { //nothing } //Note aus msg.setMessage(ShortMessage.NOTE_OFF, 0, DATA[i][0], 0); rcvr.send(msg, -1); } } //Synthesizer schließen synth.close(); } public static void main(String[] args) { try { playAlleMeineEntchen(); } catch (Exception e) { e.printStackTrace(); System.exit(1); } System.exit(0); } }
 
 Hätte jmd. da eine Idee?
 Danke,
 askarian
 
- 
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden! lima-city: Gratis werbefreier Webspace für deine eigene Homepage 
- 
    
    Hallo askarian,
 
 bei mir läuft Dein Code einwandfrei und spielt auch "Alle meine Entchen".
 Vielleicht hat Deine Java-Installation ein Problem. Ich habe hier JDK und JRE in Version 1.7.0 Update 7 (jeweils 64-bit).
 Vielleicht mal updaten / neu installieren.
- 
    
    darkpandemic schrieb: 
 Hallo askarian,
 
 bei mir läuft Dein Code einwandfrei und spielt auch "Alle meine Entchen".
 Vielleicht hat Deine Java-Installation ein Problem. Ich habe hier JDK und JRE in Version 1.7.0 Update 7 (jeweils 64-bit).
 Vielleicht mal updaten / neu installieren.
 
 Ok, das könnte sein. Ich musste letztens mal Windoof neu installieren...
 Werde mich dann melden.
- 
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden! lima-city: Gratis werbefreier Webspace für deine eigene Homepage 

