gpt4 book ai didi

java - jp2launcher.exe 不会随着小程序关闭而退出

转载 作者:行者123 更新时间:2023-11-30 07:24:26 24 4
gpt4 key购买 nike

如果我关闭包含 JavaFX 内容的小程序(因此小程序正在使用 EDT 和 JavaFX 线程),jp2launcher.exe 会继续运行近 1 分钟,以便小程序无法轻松再次启动(只要它不被识别为新实例 -浏览器关闭后等)。

我用谷歌搜索过,但没有找到解决方案。我只发现了非常相似的问题 – https://bugs.openjdk.java.net/browse/JDK-8051030 .

另一个解决方案是,如果小程序可以在持久的 jp2launcher.exe 上启动,但它不能启动。它根本就没有被调用。仅重写 JApplet 的 init 方法。

import javax.swing.JApplet;
import javax.swing.SwingUtilities;

import java.awt.Graphics;

import javafx.embed.swing.JFXPanel;
import javafx.application.Platform;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.animation.Timeline;

/*<applet code="sample" width=600 height=600></applet>*/

public class sample extends JApplet{
protected Scene scene;
protected Group group;
Timeline timeline;
JFXPanel fxPanel;


@Override
public final void init(){initSwing();}

private void initSwing(){
fxPanel = new JFXPanel();
add(fxPanel);

Platform.runLater(() ->{initFX(fxPanel);});
}

private void initFX(JFXPanel fxPanel){
timeline=new Timeline();
group=new Group();
scene=new Scene(group);
}

@Override
public void start(){
try{SwingUtilities.invokeAndWait(this::initSwing);}
catch(java.lang.InterruptedException|java.lang.reflect.InvocationTargetException e){}}
}

最佳答案

根据您的更新,

  • 我无法在所示平台上重现该问题;选择退出小程序和返回命令提示符之间的延迟没有明显增加。如果问题是特定于平台的,我已包含经过测试的示例以供引用。

    $ javac sample.java ; appletviewer sample.java
  • 注意到here ,“在小程序中,必须使用 invokeAndWaitinit 方法启动 GUI 创建任务。” Applet::start 太晚了。

  • 不习惯丢弃异常,当 JFXPanel 为空或未初始化时,我在 quit 上看到 java.lang.IllegalStateException

image

import javafx.embed.swing.JFXPanel;
import javafx.application.Platform;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javax.swing.JApplet;
import javax.swing.SwingUtilities;

/*<applet code="sample" width=300 height=200></applet>*/
public class sample extends JApplet {

protected Scene scene;
protected Group group;
JFXPanel fxPanel;

@Override
public final void init() {
try {
SwingUtilities.invokeAndWait(this::initSwing);
} catch (java.lang.InterruptedException | java.lang.reflect.InvocationTargetException e) {
e.printStackTrace(System.out);
}
}

private void initSwing() {
fxPanel = new JFXPanel();
add(fxPanel);
Platform.runLater(() -> {
initFX(fxPanel);
});
}

private void initFX(JFXPanel fxPanel) {
group = new Group();
group.getChildren().add(new Label(
System.getProperty("os.name") + " v"
+ System.getProperty("os.version") + "; Java v"
+ System.getProperty("java.version")));
scene = new Scene(group);
fxPanel.setScene(scene);
}
}

关于java - jp2launcher.exe 不会随着小程序关闭而退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36997044/

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