Scala SBT 管理プロジェクトで Java Sound API を使用しようとしています。
音符を鳴らすおもちゃアプリです。
import javax.sound.midi._
object MyMain extends App {
val infos = MidiSystem.getMidiDeviceInfo()
println( "[DEBUG] midi devices found: " + infos.length )
val myMsg = new ShortMessage;
// Start playing the note Middle C (60),
// moderately loud (velocity = 93).
myMsg.setMessage(ShortMessage.NOTE_ON, 0, 60, 93);
val timeStamp = -1;
val rcvr : Receiver = MidiSystem.getReceiver();
rcvr.send(myMsg, timeStamp);
readChar() // give time to play note
}
run
SBT で実行すると、javax.sound.midi.MidiUnavailableException
なぜなら infos.length
0 が返されます。とはいえ、IntelliJ でアプリを実行すると、2 つのデバイスが検出され、ノートは問題なく再生されます。
SBT を実行するには、何を知る必要がありますか? クラスパスに追加する必要があるものはありますか? IntelliJ が大量の jar を実行コマンドにアタッチしていることに気付きました (ただし、jdk/jre/lib/ からの jar を削除しても効果はありませんでしたが、他のものは scala 関連または IntelliJ 関連です)。