设置-Djava.awt.headless = true后的Java Headless Exception

mze*_*eba 2 java linux tomcat headless jfreechart

我在用:

Linux Debian 6,Java 1.6.29和Tomcat 6

我看过很多关于它的帖子解释说java.awt需要X11库.. 等等,但是他们没有解决问题.

我在我的盒子里设置了-Djava.awt.headless = true,我解决了无头环境的第一个问题,现在我得到了:

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)
...
Run Code Online (Sandbox Code Playgroud)

我知道通过这样做我只是告诉java没有监视器(实际上运行一个独立的java程序来检查环境是否无头,它确实返回true).那么与设置DISPLAY env变量的Linux环境有什么关系呢?

非常感谢你的帮助,

谢谢.

jal*_*aba 5

正如您可以在http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/中阅读的那样,如果不支持显示设备,键盘或鼠标,则会影响许多组件.与Canvas,Panel和Image组件相关的方法不需要抛出HeadlessException,因为这些组件可以被赋予空对等并被视为轻量级组件.

所以JFrame是抛出HeadlessException的组件.

如果您想在无头环境中使用jfreechart生成图表,此链接可以帮助您:http://javaevangelist.blogspot.com.es/2010/11/creating-charts-on-headless-systems.html.