首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行JavaFX时的分段故障和IntelliJ中的Swing

运行JavaFX时的分段故障和IntelliJ中的Swing
EN

Stack Overflow用户
提问于 2016-03-29 12:56:15
回答 1查看 506关注 0票数 4

在运行IntelliJ 2016.1社区版中的以下示例时,我总是遇到一个分段错误:

代码语言:javascript
复制
import javax.swing.*;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class Repro extends Application {

    public static void main(String[] args) {
        JFrame swingFrame = new JFrame();
        swingFrame.setTitle("Repro start");
        swingFrame.setSize(200, 350);
        swingFrame.setVisible(true);

        Application.launch(args);
    }

    @Override
    public void start(Stage stage) throws Exception {
        Pane root = new Pane();
        root.setMinHeight(200);
        root.setMinWidth(350);
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
    }
}

环境情况如下:

  • Ubuntu 15.10
  • openjdk-8 (1.8.0_u66 build 17)
  • openjfx-8 (8u60-b27-4)
  • IntelliJ 2016.1社区版(构建#IC-145.258)

通过将javac运行到java中,这个问题是不可复制的。

当运行oraclejdk (1.8.0_u77b03)时,问题也没有显示出来。

作为参考,该程序的“输出”如下:

代码语言:javascript
复制
Prism-ES2 Error : GL_VERSION (major.minor) = 1.4
Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" Exception in thread "JavaFX Application Thread" #
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (safepoint.cpp:712), pid=16937, tid=140197878814464
#  fatal error: Illegal threadstate encountered: 6
#
# JRE version: OpenJDK Runtime Environment (8.0_66-b17) (build 1.8.0_66-internal-b17)
# Java VM: OpenJDK 64-Bit Server VM (25.66-b17 mixed mode linux-amd64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/vogel612/.../hs_err_pid16937.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#

Process finished with exit code 134

运行ulimit -c unlimited和重新启动IntelliJ后,问题仍然存在

根据请求,此类执行的错误日志可在这个要点。上使用。

我怎样才能纠正这种行为呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-31 07:18:40

此错误可以在IntelliJ外部按以下方式再现。

代码语言:javascript
复制
public class Main {
    public static void main(String[] args) throws Exception {
        new Repro().main(new String[0]);
    }
}

在Ubuntu15.10上运行java -cp . Main

openjdk版本“1.8.0_66-内部” OpenJDK运行时环境(Build1.8.0_66-内部-B17) OpenJDK 64位服务器VM (构建25.66-b17,混合模式)

会产生同样的致命错误。而运行java -cp . Repo并没有失败。

在CentOS 7上运行CentOS

openjdk版本"1.8.0_77“ OpenJDK运行时环境(Build1.8.0_77-b03) OpenJDK 64位服务器VM (build 25.77-b03,混合模式)

打开Swing JFrame和JavaFX窗格。

这个问题似乎与特定的OpenJDK版本以及类Repo的调用方式有关。

编辑如果你不能切换到另一个版本,就有一个可能的“解决办法”。(基于这个帖子)

修改您的Repro.java如下,它不会在OpenJDK Runtime Environment (build 1.8.0_66-internal-b17)上失败

代码语言:javascript
复制
public static void main(String[] args) throws Exception {
    new JFXPanel(); // the "workaround" to initialize the toolkit
    JFrame swingFrame = new JFrame();
    ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36284944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档