Java 8이 올바르게 설치되었으며 Java 버전은 OpenJDK가 아닙니다. 내 IDE는 Eclipse입니다. 나는 mediaPlayer
는 몇 초 동안 음악을 재생할 수 있습니다JavaFX 미디어 플레이어가 충돌하는 이유는 무엇입니까?
import java.io.File;
import javafx.embed.swing.JFXPanel;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
public class TestPlayer {
static JFXPanel fxPanel =new JFXPanel();
private Media song;
private MediaPlayer mediaPlayer ;
public TestPlayer(String filePath) {
song=new Media(new File(filePath).toURI().toString());
mediaPlayer = new MediaPlayer(song);
}
public void play() {
this.mediaPlayer.play();
}
public static void main(String[] args) {
new TestPlayer("song\\1.mp3").play();
}
}
자바 FX 프로젝트에서 다음 코드를 실행하면 다음 소리없이 예외가 발생하지 않습니다.
은 그 때 나는private static Media song;
에
private Media song;
에서 8 호선을 변경 및 수정 된 코드는 성공적으로 실행.
문제가 해결되었지만 이유를 알고 싶습니다. 이 2 개 다음 스크린 샷은 수정하기 전에 이클립스
의 차이는 "JFXMedia 플레이어 EventQueueThread"입니다.
'static '을 추가하는 것이 올바른 수정이 아닐 수 있습니다. 스택 추적이 충돌 할 때 게시 할 수 있습니까? –
정적을 추가 할 때 인스턴스를 만들었습니까? –
'static '을 추가하여 만든 차이점은'Media' 인스턴스가 범위를 벗어나는 것을 방지한다는 것입니다. 실제로 미디어를 재생하는 스레드는 약한 참조 만 유지합니다. 실제 응용 프로그램에서는 이것이 분명히 문제가되지 않습니다. –