kostenloser Webspace werbefrei: lima-city


Java-Midi-Synthesizer funktioniert nicht

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    askarian

    Kostenloser Webspace von askarian

    askarian hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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.
  4. Autor dieses Themas

    askarian

    Kostenloser Webspace von askarian

    askarian hat kostenlosen Webspace.

    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.
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!