Spring Boot Java中的线程“ main”中的java.awt.HeadlessException异常

时间:2019-09-21 12:22:46

标签: java swing spring-boot

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

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);
            }
        });
    }
}

2 个答案:

答案 0 :(得分:1)

尝试禁用无头属性,如图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);
});

答案 1 :(得分: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答案