简体   繁体   English

spring 启动 java 中的线程“主”java.awt.HeadlessException 中的异常

[英]Exception in thread “main” java.awt.HeadlessException in spring boot java

I tried to run JFrameForm created by netbeans IDE using intellij, I copied source code from netbeans and paste it to new java class and create object in main function and set visible of jframe included class and run it it gives me below error I tried to run JFrameForm created by netbeans IDE using intellij, I copied source code from netbeans and paste it to new java class and create object in main function and set visible of jframe included class and run it it gives me below error

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

My source code available below and how to resolve this?我的源代码在下面可用,如何解决这个问题?

@SpringBootApplication
public class FrontendApplication {

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

}

MainFrame class主机 class

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

Try to disable headless property as shown here.尝试禁用无头属性,如此处所示 You will have to do it right before you create/show the JFrame.您必须在创建/显示 JFrame 之前立即执行此操作。

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

An example:一个例子:

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

Try this尝试这个

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

Refer to this answer参考这个答案

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM