【问题标题】:Exception in thread "main" java.awt.HeadlessException in spring boot javaspring boot java中线程“main”java.awt.HeadlessException中的异常
【发布时间】:2020-01-22 05:06:16
【问题描述】:

我尝试使用 intellij 运行由 netbeans IDE 创建的 JFrameForm,我从 netbeans 复制了源代码并将其粘贴到新的 java 类并在主函数中创建对象并设置 jframe 包含类的可见性并运行它给我以下错误

2019-09-21 17:36:31.363Exception in thread "main" java.awt.HeadlessException
at java.desktop/java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:208)
INFO    at java.desktop/java.awt.Window.<init>(Window.java:548)
4744    at java.desktop/java.awt.Frame.<init>(Frame.java:423)
---     at java.desktop/java.awt.Frame.<init>(Frame.java:388)
[       Thread-1]   at java.desktop/javax.swing.JFrame.<init>(JFrame.java:180)
j.LocalContainerEntityManagerFactoryBean    at com.sunTravel.frontend.uiComponents.MainFrame.<init>    
(MainFrame.java:19)
:   at com.sunTravel.frontend.FrontendApplication.main(FrontendApplication.java:12)
Closing JPA EntityManagerFactory for persistence unit 'default'
2019-09-21 17:36:31.364  INFO 4744 --- [       Thread-1] .SchemaDropperImpl$DelayedDropActionImpl :         
HHH000477: Starting delayed evictData of schema as part of SessionFactory shut-down'
2019-09-21 17:36:31.367  INFO 4744 --- [       Thread-1] com.zaxxer.hikari.HikariDataSource       :     
HikariPool-1 - Shutdown initiated...
2019-09-21 17:36:31.370  INFO 4744 --- [       Thread-1] com.zaxxer.hikari.HikariDataSource       : 
HikariPool-1 - Shutdown completed.

Process finished with exit code 1

下面有我的源代码以及如何解决这个问题?

@SpringBootApplication
public class FrontendApplication {

    public static void main(String[] args) {
        SpringApplication.run(FrontendApplication.class, args);
        MainFrame mf = new MainFrame();
        mf.setVisible(true);
    }

}

MainFrame 类

public class MainFrame extends javax.swing.JFrame {


public MainFrame() {
    initComponents();
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGap(0, 400, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGap(0, 300, Short.MAX_VALUE)
    );

    pack();
}// </editor-fold>

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    /* Set the Nimbus look and feel */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {

 java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.SEVERE, 
 null, ex);
    } catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.SEVERE, 
 null, ex);
    } catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.SEVERE, 
null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(MainFrame.class.getName()).log(java.util.logging.Level.SEVERE, 
null,ex);
        }

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MainFrame().setVisible(true);
            }
        });
    }
}

【问题讨论】:

    标签: java swing spring-boot


    【解决方案1】:

    试试这个

    public static void main(String[] args) {
        SpringApplicationBuilder builder = new SpringApplicationBuilder(DemoApplication.class);
        builder.headless(false);
        builder.run(args);
        MainFrame mf = new MainFrame();
        mf.setVisible(true);
    }
    

    参考this答案

    【讨论】:

      【解决方案2】:

      尝试禁用无头属性,如图here. 您必须在创建/显示 JFrame 之前立即执行此操作。

      System.setProperty("java.awt.headless", "false"); //Disables headless
      

      一个例子:

      SpringApplication.run(MyClass.class, args);
      System.setProperty("java.awt.headless", "false");
      SwingUtilities.invokeLater(() -> {
          JFrame f = new JFrame("myframe");
          f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          f.setVisible(true);
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-02
        • 2019-12-02
        • 2021-10-17
        • 2013-11-21
        • 2012-10-23
        • 1970-01-01
        • 2016-10-09
        • 2018-12-06
        相关资源
        最近更新 更多