1

アプリケーションで wav ファイルを再生する際に問題が発生しました。

これは私のエラーです:

java.lang.IllegalArgumentException
 at javax.microedition.media.Manager.createPlayer(), bci=8
 at Tajwid.Tajwid.run(Tajwid.java:649)
 at Tajwid.Tajwid.actionPerformed(Tajwid.java:186)
 at com.sun.lwuit.util.EventDispatcher.fireActionSync(), bci=19
 at com.sun.lwuit.util.EventDispatcher.fireActionEvent(EventDispatcher.java:257)

これは私のコードです:

public void run() {
    try {
        InputStream is = getClass().getResourceAsStream("/tes.wav");
        player = Manager.createPlayer(is, "audio/x-wav");

        player.realize();
        // get volume control for player and set volume to max
        vc = (VolumeControl) player.getControl("VolumeControl");
        if (vc != null) {
            vc.setLevel(100);
        }
        player.prefetch();
        player.start();
    } catch (Exception e) {
        e.printStackTrace();
    }

デバイス構成: CLDC-1.1
デバイス プロファイル MIDP 2.0

4

1 に答える 1

1

表示されたエラー メッセージには、コードの何が問題だったのかを判断するのに十分な情報が含まれています。

もう少し詳しく見てください:

    java.lang.IllegalArgumentException
     at javax.microedition.media.Manager.createPlayer()...

で問題が発生したと表示されManager.createPlayer()ます。コードから、 method を使用していることは明らかですManager.createPlayer(java.io.InputStream stream, java.lang.String type)

使用するメソッドのAPI ドキュメント(オンラインで入手可能) を調べると、この例外が発生したときの説明が見つかります。

    Throws:
        java.lang.IllegalArgumentException - Thrown if stream is null. 

上記は、メソッドに渡されたstreamパラメーター (コード内) が null であることを意味します。is

の初期化直後にログを追加して、isこの問題を簡単にデバッグできます。

InputStream is = getClass().getResourceAsStream("/tes.wav");
// add some logging to see if initialization was OK or not:
System.out.println("input stream is null: [" + (is == null) + "]");

そうすれば、MIDlet をエミュレータで実行するときに、MIDlet がis期待どおりに初期化されたかどうかを確認できます。

実際、コードを見ると、getResourceAsStream: "/tes.wav"は "/test.wav "のようにタイプミスされているように見えます。

于 2012-07-16T02:37:26.430 に答える