我遇到此代码的问题:
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
关键字。问题仍然是解决问题。怎么解决它?
答案 0 :(得分:4)
只是避免这个问题,如下:
JavaApplication16.class.getClassLoader().getResourceAsStream("samp.wav");
答案 1 :(得分:1)
你不能在静态方法中使用this keyword
。只能使用this
关键字
在实例方法或构造函数中。 this
是对当前对象的引用。
尝试:
is = YourClassName.class.getClassLoader().getResourceAsStream("samp.wav");
答案 2 :(得分:1)
要完成此操作,请改为使用类文字:
is = JavaApplication16.class.getClassLoader().getResourceAsStream("samp.wav");