Hi, ich habe eine Fehlermeldung beim öffnen einer MIDI device.
Der unten stehende Code bringt mir eine
java.lang.reflect.InvocationTargetException [...]
Caused by: javax.sound.midi.MidiUnavailableException: MIDI IN receiver not available
Ab Zeile 13 durchsuche ich das Array MidiDevice.Info[] nach einem String den ich in midioutini übergeben habe.
Die Suche ist erfolgreich und ich lande wie geplant in Zeile 23. Zeile 27verursacht dann den Fehler.
Was ich nicht verstehe, ist, dass ich, wenn ich die Kommentarstriche in Zeile 23 entferne, also dem expliziten Zuweisen einer MidiDevice keine Fehlermeldung erhalte.
Ich verstehe nicht den Unterschied, zwischen der Zuweisung in Zeile 15, wo i denselben Index liefert wie der, den ich in Zeile 23 als Zahl zuweise.
Auch nach der Zuweisung in Zeile 15 habe ich nochmal den String der MidiDivice von infos[5] und infos mit i=5 verglichen. Sie sind identisch.
Könnt Ihr mir auf die Sprünge helfen? Wo liegt hier mein Denkfehler?
Danke Euch!
Lars
[CODE lang="java" title="MIDI" highlight="15, 31"]//Attribute in der Main class
MidiDevice device;
MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo();
MidiDevice.Info actualInfo;
Scanner input = new Scanner(System.in);
[...]
public boolean openMIDI(String midioutini, Stage primaryStage)
throws InvalidMidiDataException, MidiUnavailableException {
boolean midifound = false;
for (int i = 0; i < infos.length; i++) {
if (infos.toString().equals(midioutini)) {
actualInfo = infos;
System.out.println("actual info in schleife: " + infos);
midifound = true;
}
}
if (midifound == false) {
[...]
} else {
//actualInfo = infos[5];
System.out.println("Try to open MIDI device: " + actualInfo);
device = MidiSystem.getMidiDevice(actualInfo);
rcvr = device.getReceiver();
device.open();
System.out.println("Device opened: '" + actualInfo.toString() + "'");
}
return midifound;
}[/CODE]
Der unten stehende Code bringt mir eine
java.lang.reflect.InvocationTargetException [...]
Caused by: javax.sound.midi.MidiUnavailableException: MIDI IN receiver not available
Ab Zeile 13 durchsuche ich das Array MidiDevice.Info[] nach einem String den ich in midioutini übergeben habe.
Die Suche ist erfolgreich und ich lande wie geplant in Zeile 23. Zeile 27verursacht dann den Fehler.
Was ich nicht verstehe, ist, dass ich, wenn ich die Kommentarstriche in Zeile 23 entferne, also dem expliziten Zuweisen einer MidiDevice keine Fehlermeldung erhalte.
Ich verstehe nicht den Unterschied, zwischen der Zuweisung in Zeile 15, wo i denselben Index liefert wie der, den ich in Zeile 23 als Zahl zuweise.
Auch nach der Zuweisung in Zeile 15 habe ich nochmal den String der MidiDivice von infos[5] und infos mit i=5 verglichen. Sie sind identisch.
Könnt Ihr mir auf die Sprünge helfen? Wo liegt hier mein Denkfehler?
Danke Euch!
Lars
[CODE lang="java" title="MIDI" highlight="15, 31"]//Attribute in der Main class
MidiDevice device;
MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo();
MidiDevice.Info actualInfo;
Scanner input = new Scanner(System.in);
[...]
public boolean openMIDI(String midioutini, Stage primaryStage)
throws InvalidMidiDataException, MidiUnavailableException {
boolean midifound = false;
for (int i = 0; i < infos.length; i++) {
if (infos.toString().equals(midioutini)) {
actualInfo = infos;
System.out.println("actual info in schleife: " + infos);
midifound = true;
}
}
if (midifound == false) {
[...]
} else {
//actualInfo = infos[5];
System.out.println("Try to open MIDI device: " + actualInfo);
device = MidiSystem.getMidiDevice(actualInfo);
rcvr = device.getReceiver();
device.open();
System.out.println("Device opened: '" + actualInfo.toString() + "'");
}
return midifound;
}[/CODE]