1

私はこのコードに問題があります:

package javaapplication16;
import java.io.InputStream;
import javax.swing.JOptionPane;
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
public class JavaApplication16 {
    public static void main(String[] args) {
        NewJFrame n = new NewJFrame();
        n.setVisible(true);
        InputStream is;
        is = this.getClass().getClassLoader().getResourceAsStream("samp.wav");
        try {
            AudioStream audioStream;
            audioStream = new AudioStream(is);
            AudioPlayer.player.start(audioStream);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }
    }
}

それは言っている

error: non-static variable this cannot be referenced from a static context
        is = this.getClass().getClassLoader().getResourceAsStream("samp.wav");

InputStream変数を静的にすると、式の開始が不正であることがわかります。thisキーワードも削除しました。それでも問題は解決していません。どうすれば修正できますか?

4

3 に答える 3

4

次のように、問題を回避してください。

JavaApplication16.class.getClassLoader().getResourceAsStream("samp.wav");
于 2012-11-27T21:40:46.313 に答える
1

これを実現するには、代わりにクラスリテラルを使用します。

    is = JavaApplication16.class.getClassLoader().getResourceAsStream("samp.wav");
于 2012-11-27T21:42:23.157 に答える
1

this keyword静的メソッド内では使用できません。thisキーワードは、インスタンスメソッドまたはコンストラクター内でのみ使用できます。this現在のオブジェクトへの参照です。

試す:

    is = YourClassName.class.getClassLoader().getResourceAsStream("samp.wav");
于 2012-11-27T21:39:38.663 に答える