3

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
}

runSBT で実行すると、javax.sound.midi.MidiUnavailableExceptionなぜなら infos.length0 が返されます。とはいえ、IntelliJ でアプリを実行すると、2 つのデバイスが検出され、ノートは問題なく再生されます。

SBT を実行するには、何を知る必要がありますか? クラスパスに追加する必要があるものはありますか? IntelliJ が大量の jar を実行コマンドにアタッチしていることに気付きました (ただし、jdk/jre/lib/ からの jar を削除しても効果はありませんでしたが、他のものは scala 関連または IntelliJ 関連です)。

4

1 に答える 1