1

I am trying to migrate a java application which consist of some graph charts from Windows to Linux but I am getting following the exception:

    java.awt.HeadlessException:
    No X11 DISPLAY variable was set, but this program performed an operation which requires it.
    at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
    at java.awt.Window.<init>(Window.java:432)
    at java.awt.Frame.<init>(Frame.java:403)
    at java.awt.Frame.<init>(Frame.java:368)
    at javachart.servlet.Bean.makeURLImage(Unknown Source)
    at javachart.applet.ParameterParser.makeURLImage(Unknown Source)
    at javachart.applet.ParameterParser.populateGc(Unknown Source)
    at javachart.applet.ParameterParser.getDatasetPropertiesFromParameters(Unknown Source)
    at javachart.applet.ParameterParser.getDatasetParameters(Unknown Source)
    at javachart.applet.ParameterParser.getDataset(Unknown Source)
    at javachart.applet.ParameterParser.getDatasets(Unknown Source)
    at javachart.applet.ParameterParser.getOptions(Unknown Source)
    at javachart.servlet.Bean.getOptions(Unknown Source)
    at javachart.servlet.labelLineApp.init(Unknown Source)
    at javachart.servlet.Bean.buildChart(Unknown Source)
    at javachart.servlet.Bean.generate(Unknown Source)
    at javachart.servlet.Bean.getFileName(Unknown Source)
    at org.apache.jsp.www.SaveHtml.chartByHotelSNS_jsp._jspService(chartByHotelSNS_jsp.java:676)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:322)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:662)

I also tried with setting the Display environment variable through Putty but that also didn't work.
Can anyone tell me where exactly the problem is?
Is it in the application or linux side?

oers
  • 18,436
  • 13
  • 66
  • 75
izhar
  • 91
  • 9

3 Answers3

0

I believe, the root cause of your issue is that the linux server doesn't have X11 installed, on the other hand the code you're running uses the graphics environment, or at least your graphical output is not configured properly.

I think this article can be useful in this case. In addition the link provided by Alex K can also be an answer to your question.

Good Luck!

Mark Bramnik
  • 39,963
  • 4
  • 57
  • 97
0

You need to somehow set System.setProperty("java.awt.headless", "true");

Tell the server team to start whatever Java they are starting with an additional command line parameter

java -Djava.awt.headless=true
Bob Kuhar
  • 10,838
  • 11
  • 62
  • 115
0

Either set the following sytem property (if X11 is installed):

DISPLAY=:0.0
export DISPLAY

Or start your own dummy X11 server. Example:

vncserver :1
export DISPLAY=:1

Or have a look at Xvfb

Wilhelm Kleu
  • 10,821
  • 4
  • 36
  • 48