Hallo,
ich habe ein Problem mit einem Code aus "Head First Java". Der Code lässt sich sowohl auf meinem Netbook (Ubuntu 9.10, Java-Version 6.20) als auch auf meinem Tower (Ubuntu 9.04, Java-Version 6.20) kompilieren. Auf dem Tower kommt es jedoch beim Ausführen sofort zu einer Runtime Exception, während das Programm auf dem Netbook funktioniert. Hier mal der Stacktrace:
Das ist der Code (ich hoffe, ich bekomme hier jetzt keine Probleme mit dem Urheberrecht). Die Ausgabe des Programms soll ein einzelner Ton sein (nicht über die Endlosschleife wundern, der Code wird im Buch im Anschluss noch weiter umgebaut).
Hat jemand eine Idee, woher der Fehler kommt und wie ich ihn beheben kann? Fehlt unter Ubuntu 9.04 vielleicht etwas bestimmtes Notwendiges, was bei 9.10 vorhanden ist?
(Nebenbei: Ganz sauber läuft der Code auf dem Netbook allerdings auch nicht: Wenn ich das Programm nach dem Kompilieren das erste Mal starte, kommt gar nichts, sondern erst ab dem zweiten Mal Starten kommt der gewünschte Ton. Eigenartig ???:L)
ich habe ein Problem mit einem Code aus "Head First Java". Der Code lässt sich sowohl auf meinem Netbook (Ubuntu 9.10, Java-Version 6.20) als auch auf meinem Tower (Ubuntu 9.04, Java-Version 6.20) kompilieren. Auf dem Tower kommt es jedoch beim Ausführen sofort zu einer Runtime Exception, während das Programm auf dem Netbook funktioniert. Hier mal der Stacktrace:
Code:
javax.sound.midi.MidiUnavailableException: Audio Device Unavailable
at com.sun.media.sound.MixerSynth.implOpen(MixerSynth.java:165)
at com.sun.media.sound.AbstractMidiDevice.doOpen(AbstractMidiDevice.java:144)
at com.sun.media.sound.AbstractMidiDevice.openInternal(AbstractMidiDevice.java:134)
at com.sun.media.sound.AbstractMidiDevice.getReceiverReferenceCounting(AbstractMidiDevice.java:339)
at javax.sound.midi.MidiSystem.getReceiver(MidiSystem.java:243)
at javax.sound.midi.MidiSystem.getSequencer(MidiSystem.java:442)
at javax.sound.midi.MidiSystem.getSequencer(MidiSystem.java:348)
at MiniMiniMusicApp.play(MiniMiniMusicApp.java:12)
at MiniMiniMusicApp.main(MiniMiniMusicApp.java:7)
Das ist der Code (ich hoffe, ich bekomme hier jetzt keine Probleme mit dem Urheberrecht). Die Ausgabe des Programms soll ein einzelner Ton sein (nicht über die Endlosschleife wundern, der Code wird im Buch im Anschluss noch weiter umgebaut).
Java:
import javax.sound.midi.*;
public class MiniMiniMusicApp {
public static void main(String[] args) {
MiniMiniMusicApp mini = new MiniMiniMusicApp();
mini.play();
}
public void play() {
try {
Sequencer player = MidiSystem.getSequencer();
player.open();
Sequence seq = new Sequence(Sequence.PPQ, 4);
Track track = seq.createTrack();
ShortMessage a = new ShortMessage();
a.setMessage(144,1,44,100);
MidiEvent noteOn = new MidiEvent(a,1);
track.add(noteOn);
ShortMessage b = new ShortMessage();
b.setMessage(128,1,44,100);
MidiEvent noteOff = new MidiEvent(b,16);
track.add(noteOff);
player.setSequence(seq);
player.start();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Hat jemand eine Idee, woher der Fehler kommt und wie ich ihn beheben kann? Fehlt unter Ubuntu 9.04 vielleicht etwas bestimmtes Notwendiges, was bei 9.10 vorhanden ist?
(Nebenbei: Ganz sauber läuft der Code auf dem Netbook allerdings auch nicht: Wenn ich das Programm nach dem Kompilieren das erste Mal starte, kommt gar nichts, sondern erst ab dem zweiten Mal Starten kommt der gewünschte Ton. Eigenartig ???:L)
Zuletzt bearbeitet von einem Moderator: