在ORACLE EBS 12R用XML Publisher 出报表的时候遇到这样一个错误:Exception in thread “main” java.lang.InternalError: Can’t connect to X11 window server using ‘**’ as the value of the DISPLAY variable.
报错明细
Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using 'host_name:0.0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$100(X11GraphicsEnvironment.java:52)
at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:155)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:131)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68)
at sun.font.FontManager.initSGEnv(FontManager.java:1111)
at sun.font.FontManager.findFont2D(FontManager.java:1773)
at java.awt.Font.getFont2D(Font.java:452)
at java.awt.Font.canDisplay(Font.java:1835)
at java.awt.Font.canDisplayUpTo(Font.java:1901)
at java.awt.font.TextLayout.singleFont(TextLayout.java:451)
at java.awt.font.TextLayout.<init>(TextLayout.java:509)
at org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:275)
at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.<init>(AutoSizeColumnTracker.java:117)
at org.apache.poi.xssf.streaming.SXSSFSheet.<init>(SXSSFSheet.java:79)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:656)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:648)
at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:83)
at com.xxt.ebs.request.Xml2ExcelHandler.newSheet(Xml2ExcelHandler.java:443)
at com.xxt.ebs.request.Xml2ExcelHandler.startElement(Xml2ExcelHandler.java:97)
at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1315)
at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:362)
at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:308)
at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:213)
at oracle.xml.jaxp.JXSAXParser.parse(JXSAXParser.java:292)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:277)
at com.xxt.ebs.request.CUX_REQUEST_OUTPUT_EXCEL.runProgram(CUX_REQUEST_OUTPUT_EXCEL.java:67)
at oracle.apps.fnd.cp.request.Run.main(Run.java:157)
问题原因
克隆环境的时候有个这样选项,意思为是否保留显示,当时选择了N
Do you want to preserve the Display ? N
导致DISPLAY变量的值是 host_name:0.0,以致于并发管理器调用java里面的awt工具显示的的时候无法显示。
解决方法
01 配置服务器xhost 和DISPLAY变量
#应用服务器root用户
[root@host_name ~]# export DISPLAY=:0
[root@bak-hesuan ~]# xhost +
access control disabled, clients can connect from any host
[root@host_name ~]#
#应用服务器应用用户
[appl@host_name ~]# export DISPLAY=:0
[appl@bak-hesuan ~]# xhost +
access control disabled, clients can connect from any host
[appl@host_name ~]#
#配置应用用户下的.bashrc文件将export DISPLAY=:0 写到这个文件中去,然后执行 . .bash_profile 生效
02 修改CONTEXT_FILE文件中的DISPLAY配置项
停掉应用。
先修改数据库中的CONTEXT_FILE 的DISPLAY配置项 为 :0 ,做adcfg。
再修改应用上的CONTEXT_FILE 的DISPLAY配置项 为 :0 ,做adcfg。
启动应用,测试。
03 如果再不行在上面的基础上再做以下操作
#将下面的命令配置的应用的操作系统的环境变量上去
export JAVA_OPTS=-Djava.awt.headless=true
#重启EBS应用,测试。
参考mos文章id: 文档 ID 181244.1