最近做的一个Java Web项目采用Struts2+Spring+HibernateJPA的标准架构,开发环境是win7,服务器部署环境是Ubuntu12.04,项目中有一个模块是采用JFreeChart生成图片,再创建并导入pdf文件中,开发完成后在windows下的tomcat6.0跑没有任何问题,但是部署到Ubuntu服务器上的tomcat6.0之后就不断出现问题。
最开始部署到Ubuntu服务器上的tomcat时,当要创建含图表的pdf文件时,报出如下异常:
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.(Window.java:406)
at java.awt.Frame.(Frame.java:402)
at java.awt.Frame.(Frame.java:367)
at javax.swing.JFrame.(JFrame.java:163)
上网查了一下,都说是没有配置Headless Mode。Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。Headless模式虽然不是我们愿意见到的,但事实上我们却常常需要在该模式下工作,尤其是服务器端程序开发者。因为服务器(如提供Web服务的主机)往往可能缺少前述设备,但又需要使用他们提供的功能,生成相应的数据,以提供给客户端(如浏览器所在的配有相关的显示设备、键盘和鼠标的主机)。
因此修改${TOMCAT_HOME}/bin/catalina.sh或${TOMCAT_HOME}/bin/catalina.bat文件:
在所有类似以下代码:
"$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Djava.security.manager \
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
在尾部加上一句:
-Djava.awt.headless=true \
修改后内容如下:
exec "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
-Djava.awt.headless=true \
以tomcat6.0为例,总共有七处这样的地方。然后重启tomcat服务器,创建含图表的pdf时仍然报错,但是报的错不太一样了:
java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
at java.awt.Window.(Window.java:406)
at java.awt.Frame.(Frame.java:402)
at java.awt.Frame.(Frame.java:367)
at javax.swing.JFrame.(JFrame.java:163)
于是又上网去查,说是启动tomcat的用户无法访问Xserver,包括Xserver没有启动或者没有权限访问。那就启动一下Xserver呗,于是在终端键入命令startx后报错:
root@localhost:~#startx &
/etc/X11/xinit/xserverrc: line 3: /usr/bin/X: No such file or directory
/etc/X11/xinit/xserverrc: line 3: exec: /usr/bin/X: cannot execute: No such file or directory
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error
我觉得可能是有一些依赖包没有安装,所以查找了一下,果然apt-get install xserver-xorg之后,X server可以正常启动了。然后我又照着网上所述配置了DISPLAY环境变量:
root@localhost:~#export DISPLAY=localhost:0.0
root@localhost:~#xhost +
然后重启tomcat服务器,再试还是不行,报错仍然如下:
java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
at java.awt.Window.(Window.java:406)
at java.awt.Frame.(Frame.java:402)
at java.awt.Frame.(Frame.java:367)
at javax.swing.JFrame.(JFrame.java:163)
上网继续找原因,终于在Debian论坛上看到一条回复:
于是又在catalina.sh脚本中把headless模式改为了false,重启tomcat服务器,终于没问题了,囧死……至此搞得一头雾水,不过问题总算是没有了。
相关推荐
jenkins.msi jdk1.8支持的最后一个版本jenkins,验证可用Jenkins Jenkins 2.289.3 jenkins.msi jdk1.8支持的最后一个版本jenkins,验证可用Jenkins Jenkins 2.289.3 jenkins.msi jdk1.8支持的最后一个版本jenkins,...
jenkins.msi jdk1.8支持的最后一个版本jenkins,验证可用Jenkins 2.346.1 jenkins.msi jdk1.8支持的最后一个版本jenkins,验证可用Jenkins 2.346.1 jenkins.msi jdk1.8支持的最后一个版本jenkins,验证可用Jenkins 2...
linux服务器配置jenkins 2.426.1
linux jenkins 原始配置config.xml
1. **安装**:将 `jenkins.war` 文件部署到支持 Servlet 的应用服务器,比如直接在命令行中运行 `java -jar jenkins.war`。 2. **初始化**:首次启动后,Jenkins 会创建默认配置,并提供一个初始密码,需要在浏览器...
在实际使用中,下载的 "Jenkins 2.401.3 LTS" 压缩包将包含 Jenkins 服务器的 war 文件,该文件可以直接在支持的 JDK 环境下运行。部署时,用户需要将 war 文件放到应用服务器的 web 容器(如 Tomcat)中,启动容器...
支持java8的jenkins插件,jenkins版本-Jenkins 2.346.1。解压替换jenkins插件目录plugins,就可以使用jenkins创建项目了。
1、jenkins2.346.1版本,支持java8的...3、如需要其他版本安装包,移步官网https://www.jenkins.io/zh/download/下载或者选用清华源下载,但没那么健全 https://mirrors.tuna.tsinghua.edu.cn/jenkins/windows-stable/
Jenkins拥有庞大的插件库,包括Git插件用于版本控制,Maven插件用于构建Java项目,Junit插件用于展示测试结果,以及蓝绿部署、灰度发布等高级部署策略的插件。这些插件扩展了Jenkins的功能,使其能够适应各种复杂的...
通过安装`jenkins.msi`,用户可以在Windows环境下快速开始使用,享受Jenkins带来的便利和效率提升。结合配套的教程,无论是初学者还是经验丰富的开发者,都能在Jenkins的世界里找到适合自己的自动化打包方案。
1. Jenkins windows 安装版 jenkins2.277.4.msi 2. Java验证https 访问的工具类 ...4. 本资源为 “Jenkins 在Windows下插件无法安装问题解决 https://oscar.blog.csdn.net/article/details/117012184 ” 的配套资源
jenkins 2.346.1,jdk8 适用 git maven ssh插件
`jenkins.war` 文件是 Jenkins 的核心服务包,它基于 Java Web 应用程序的格式。当这个 WAR 文件被部署到一个支持 Java Servlet 容器(如 Tomcat 或 Jetty)时,它会启动 Jenkins 服务器。WAR 文件包含 Jenkins 的...
Jenkins2.332.1LTS.msi 适用于Windows系统
node-v16.16.0-linux-x64.tar.gz jenkins.war(Jenkins-2.346.1,jdk8) jdk-11.0.19_linux-x64_bin.tar.gz jenkins-2.359-1.1.noarch.rpm redis-6.2.12.tar.gz
将 `jenkins.war` 文件部署到Web服务器的`webapps`目录下,服务器会自动解压并运行该文件,启动Jenkins服务。这种方式更加灵活,因为你可以自定义Jenkins的运行环境和配置。 **Jenkins核心功能**: 1. **持续集成**...
压缩包内的"jenkins.msi"文件是Windows操作系统上的安装程序,用于在本地机器上安装Jenkins。安装过程中,系统会提示配置服务器端口、初始管理员密码等设置。安装完成后,可以通过Web界面访问Jenkins服务器,进行...
部署过程包括将jenkins.war文件复制到Tomcat的webapps目录下,然后启动或重新启动Tomcat服务。一旦部署成功,用户可以通过浏览器访问 http://yourserver:8080/jenkins 来启动Jenkins的配置和使用。 在2.346.1版本中...
jenkins.war jenkins.war jenkins.war jenkins.war
jenkins-2.346.3.war