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