mah*_*esh 14 java browser clipboard headless spring-boot
当我们尝试获取 Clipboard 实例时。
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
Run Code Online (Sandbox Code Playgroud)
我还尝试通过设置头部来运行 Spring Boot 应用程序。
SpringApplicationBuilder builder = new SpringApplicationBuilder(SpringBootApplication.class,args);
builder.headless(false).run(args);
Run Code Online (Sandbox Code Playgroud)
我们正在低于异常。
java.awt.HeadlessException
at sun.awt.HeadlessToolkit.getSystemClipboard(HeadlessToolkit.java:309)
at com.kpit.ecueditor.core.utils.ClipboardUtility.copyToClipboard(ClipboardUtility.java:57)
Run Code Online (Sandbox Code Playgroud)
有人可以建议我在这里缺少什么。
如果我在简单的 java 应用程序中运行相同的剪贴板代码,它可以正常工作,但不能在 Spring Boot 应用程序中运行。
小智 20
而不是这条线
SpringApplication.run(Application.class, args);
Run Code Online (Sandbox Code Playgroud)
用
SpringApplicationBuilder builder = new SpringApplicationBuilder(Application.class);
builder.headless(false);
ConfigurableApplicationContext context = builder.run(args);
Run Code Online (Sandbox Code Playgroud)
它会工作
我有同样的异常,在 Swing 应用程序中使用 Spring Boot 2。
以下是对我有用的示例:
在主类中:
//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);
});
}
}
Run Code Online (Sandbox Code Playgroud)
在测试类中,您需要设置 java.awt.headless 属性,以便在测试代码时不会出现 java.awt.HeadlessException:
//MainTest.java
@RunWith(SpringRunner.class)
@SpringBootTest
public class MainTest {
@BeforeClass
public static void setupHeadlessMode() {
System.setProperty("java.awt.headless", "false");
}
@Test
public void someTest() { }
}
Run Code Online (Sandbox Code Playgroud)
对于那些使用 JavaFX 遇到此异常的人,此答案可能会有所帮助。
| 归档时间: |
|
| 查看次数: |
10510 次 |
| 最近记录: |