我正在使用:
Linux Debian 6, Java 1.6.29 和 Tomcat 6
我看过很多关于它的帖子,解释说 java.awt
需要 X11 库等,但它们并没有解决问题。
我在我的盒子里设置了 -Djava.awt.headless=true 并且我解决了 headless (headless)环境的第一个问题,现在我得到:
java.awt.HeadlessException
java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
java.awt.Window.(Window.java:432)
java.awt.Frame.(Frame.java:403)
javax.swing.JFrame.(JFrame.java:202)
org.jfree.ui.ApplicationFrame.(ApplicationFrame.java:65)
...
我知道通过这样做我只是告诉 java 没有监视器(实际上运行一个独立的 java 程序来检查环境是否是 headless (headless)的它确实返回 true
)。那么它与设置DISPLAY env变量之类的Linux环境有关吗?
非常感谢你的帮助,
谢谢。
最佳答案
正如您在 http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/ 中所读到的那样, 如果不支持显示设备、键盘或鼠标,许多组件都会受到影响。与 Canvas、Panel 和 Image 组件相关的方法不需要抛出 HeadlessException,因为这些组件可以被赋予空对等体并被视为轻量级组件。
所以 JFrame 是抛出 HeadlessException 的组件。
如果您想在 headless (headless)环境中使用 jfreechart 生成图表,此链接可能对您有所帮助:http://javaevangelist.blogspot.com.es/2010/11/creating-charts-on-headless-systems.html .
关于设置 -Djava.awt.headless=true 后的 Java Headless 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10170609/