Java 8 と Java 10 での MixerInfo の並び順の違い
macOSでJDKのインストールにsdkmanを使っての話ですが、Java 8では声を出してくれていたコードが、Java 10で実行すると喋らないなと悩んでいたのですが、 単純にAudioSystem.getMixerInfo()が返す順序が変わっていただけということだった。
確認するためのコードは、こんな感じ
package jp.pigumer.javasound import javax.sound.sampled.AudioSystem object MixerInfoList extends App { val info = AudioSystem.getMixerInfo() info.zipWithIndex.foreach { case (mi, index) ⇒ println(s"$index: ${mi.getName}") } }
Java 8(Oracle JDK)
java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) 0: Default Audio Device 1: Built-in Microphone 2: Built-in Output 3: Port Built-in Microphone 4: Port Built-in Output
Java 10(Oracle JDK)
java version "10.0.1" 2018-04-17 Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10) Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode) 0: Port Built-in Microphone 1: Port Built-in Output 2: Default Audio Device 3: Built-in Microphone 4: Built-in Output
Java 10(OpenJDK)
openjdk version "10" 2018-03-20 OpenJDK Runtime Environment 18.3 (build 10+46) OpenJDK 64-Bit Server VM 18.3 (build 10+46, mixed mode) 0: Port Built-in Microphone 1: Port Built-in Output 2: Default Audio Device 3: Built-in Microphone 4: Built-in Output