gpt4 book ai didi

java - 无法在 Eclipse 中关闭小程序

转载 作者:太空宇宙 更新时间:2023-11-04 08:32:26 25 4
gpt4 key购买 nike

我有一个运行 VLCJ 的小程序 (http://code.google.com/p/vlcj/) - 基本上将 VLC 播放器嵌入到小程序中。在 Eclipse 中运行时,它运行良好,但我无法关闭调试小程序窗口或以某种方式终止它。我想知道,这是为什么呢?代码中是否有任何内容阻止其停止调试?我必须重新启动 Eclipse 才能使其退出。我非常确定您不需要添加 destroy() 来关闭调试窗口。

谢谢

import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Frame;
import javax.swing.JApplet;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import com.sun.jna.NativeLibrary;

import uk.co.caprica.vlcj.player.MediaPlayerFactory;
import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;


public class Main extends JApplet {

/**
* @param args
*/
/* entry point */
public void init() {
String file = "110825-155446.wmv"; // only 2-3 seconds clip for minimum storage
runVideo(file);
}

/* runs the video file */
public void runVideo(String file) {

setSize(400,300);
setLayout(new BorderLayout());
Canvas vs = new Canvas();
add(vs,BorderLayout.CENTER);
setVisible(true);

MediaPlayerFactory factory = new MediaPlayerFactory();

EmbeddedMediaPlayer mediaPlayer = factory.newEmbeddedMediaPlayer();
mediaPlayer.setVideoSurface(factory.newVideoSurface(vs));

mediaPlayer.playMedia(file);
try {
Thread.currentThread().join();
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

}


}

最佳答案

原因就在这段代码片段部分:

try {
Thread.currentThread().join();
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

它阻止应用程序关闭,因为它不想返回系统。 Thread.join()使当前线程等待另一个线程完成,基本上它会永远等待。

要改进它,您可以这样做(如 http://code.google.com/p/vlcj/wiki/MinimalMp3Player ):

mediaPlayer.addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
public void finished(MediaPlayer mediaPlayer) {
System.exit(0);
}
public void error(MediaPlayer mediaPlayer) {
System.exit(1);
}
});
mediaPlayer.playMedia(args[0]);
Thread.currentThread().join();

但是,我们不能使用System.exit() Java servlet 代码(甚至 applet 代码)中的方法,因为它可以关闭其他 Java 应用程序/servlet/applet 代码可能需要的代码使用的 JVM。请参阅Alternatives to System.exit(1) , Calling System.exit() in Servlet's destroy() method

关于java - 无法在 Eclipse 中关闭小程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7204425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com