Botte de printemps: java.awt.HeadlessException


Lorsque nous essayons d'obtenir l'instance du Presse-papiers.

Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();

J'ai également essayé d'exécuter l'application Spring boot en définissant la tête.

SpringApplicationBuilder builder = new SpringApplicationBuilder(SpringBootApplication.class,args);
        builder.headless(false).run(args);

Nous obtenons ci-dessous exception.

java.awt.HeadlessException
    at sun.awt.HeadlessToolkit.getSystemClipboard(HeadlessToolkit.java:309)
    at com.kpit.ecueditor.core.utils.ClipboardUtility.copyToClipboard(ClipboardUtility.java:57)

Quelqu'un peut-il me suggérer ce qui me manque.

Si j'exécute le même code du presse-papiers dans une application java simple , cela fonctionne mais pas dans l'application spring boot.

Author: mahesh, 2018-06-23

1 answers

J'ai eu la même exception, en utilisant Spring Boot 2 dans une application swing.

Voici un exemple de ce qui a fonctionné pour moi:

Dans la classe principale:

//Main.java
@SpringBootApplication
public class Main implements CommandLineRunner {

    public static void main(String[] args) {
        ApplicationContext contexto = new SpringApplicationBuilder(Main.class)
                .web(WebApplicationType.NONE)
                .headless(false)
                .bannerMode(Banner.Mode.OFF)
                .run(args);
    }

    @Override
    public void run(String... args) throws Exception {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame();
            frame.setVisible(true);
        });
    }
}

Dans la classe test, vous devrez définir java.awt.propety sans tête, de sorte que vous n'obtiendrez pas un java.awt.HeadlessException lors du test du code:

//MainTest.java
@RunWith(SpringRunner.class)
@SpringBootTest
public class MainTest {

    @BeforeClass
    public static void setupHeadlessMode() {
        System.setProperty("java.awt.headless", "false");
    }

    @Test
    public void someTest() { }
}

Pour ceux qui ont cette exception en utilisant JavaFX cette réponse pourrait aider.

 0
Author: Carlos Nantes, 2018-09-12 11:27:44