- 浏览: 1779216 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
奔跑的小牛:
例子都打不开
如何使用JVisualVM进行性能分析 -
蜗牛coder:
好东西[color=blue][/color]
Lucene学习:全文检索的基本原理 -
lovesunweina:
不在haoop中是在linux系统中,映射IP的时候,不能使用 ...
java.io.IOException: Incomplete HDFS URI, no host -
evening_xxxy:
挺好的, 谢谢分享
如何利用 JConsole观察分析Java程序的运行,进行排错调优 -
di1984HIT:
学习了~~~
ant使用ssh和linux交互 如:上传文件
===============================
gentoo(linux)系统下图片问题
验证码图片问题或者是说采用以下方案生成图片的问题
{code}
// 创建内存图象并获得其图形上下文
final BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
final Graphics g = image.getGraphics();
{code}
如何解决?
我目前机器上的JDK如下(java-config -L)
JDK发行版:
1) IcedTea6-bin 1.8.1 [icedtea6-bin]
*) Sun JDK 1.6.0.21 [sun-jdk-1.6]
解决方案1:
使用sun-jdk-1.6就可以好(java-config -S 1 / java-config -s 1)
但是使用icedtea6-bin会报以下异常:
{code}
java.lang.UnsatisfiedLinkError: /opt/icedtea6-bin-1.8.1/jre/lib/amd64/libfontmanager.so: libfreetype.so.6: cannot open shared
object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1750)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1667)
at java.lang.Runtime.loadLibrary0(Runtime.java:840)
at java.lang.System.loadLibrary(System.java:1047)
at sun.font.FontManagerNativeLibrary$1.run(FontManagerNativeLibrary.java:61)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManagerNativeLibrary.<clinit>(FontManagerNativeLibrary.java:32)
at sun.font.FontManager$1.run(FontManager.java:233)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManager.<clinit>(FontManager.java:230)
at sun.java2d.SunGraphicsEnvironment$2.run(SunGraphicsEnvironment.java:178)
at java.security.AccessController.doPrivileged(Native Method)
at sun.java2d.SunGraphicsEnvironment.<init>(SunGraphicsEnvironment.java:162)
at sun.awt.X11GraphicsEnvironment.<init>(X11GraphicsEnvironment.java:252)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
at java.awt.image.BufferedImage.createGraphics(BufferedImage.java:1152)
at java.awt.image.BufferedImage.getGraphics(BufferedImage.java:1142)
java.lang.NoClassDefFoundError: Could not initialize class sun.font.FontManager
at sun.java2d.SunGraphicsEnvironment$2.run(SunGraphicsEnvironment.java:178)
at java.security.AccessController.doPrivileged(Native Method)
at sun.java2d.SunGraphicsEnvironment.<init>(SunGraphicsEnvironment.java:162)
at sun.awt.X11GraphicsEnvironment.<init>(X11GraphicsEnvironment.java:252)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
at java.awt.image.BufferedImage.createGraphics(BufferedImage.java:1152)
at java.awt.image.BufferedImage.getGraphics(BufferedImage.java:1142)
{code}
解决方案2:
启动 X11 window server
编辑tomcat的启动脚本,加上export DISPLAY=:0,重启tomcat
无论使用sun jdk还是使用icedtea都会正常,并且jfreechart的问题也能解决
如果关闭了X11 那么Web服务会崩溃掉(503),再启动X11还是不能恢复,还需要重启tomcat
如果设置了export DISPLAY=:0 而没有启动X11 window server会报以下异常:
{code}
java.lang.InternalError: Can't connect to X11 window server using ':0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$100(X11GraphicsEnvironment.java:62)
at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:166)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:142)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
at java.awt.image.BufferedImage.createGraphics(BufferedImage.java:1152)
at java.awt.image.BufferedImage.getGraphics(BufferedImage.java:1142)
{code}
如果启动了X11 window server,而没有设置export DISPLAY=:0那么无论使用sun jdk还是使用icedtea都会正常。
==============================
jfreechart生成图片时候会出现错误
这个方法http://lansky07.iteye.com/blog/283899 我没有得到解决。
同一思路的方案 http://www.iteye.com/topic/665688 也没得到解决。
都会出现这个异常:
{code}
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 javax.swing.JFrame.<init>(JFrame.java:202)
at org.jfree.ui.ApplicationFrame.<init>(ApplicationFrame.java:65)
{code}
解决方法:
1、安装xorg-server (X11 window server)并启动(startx)
2、找到tomcat的启动脚本,加上export DISPLAY=:0,重启tomcat
位置如下:
{code}
init_env_vars() {
# Populate JAVA_HOME
JAVA_HOME=`java-config --jre-home`
export DISPLAY=:0
{code}
如果没有设置export DISPLAY=:0,出错如下:
{code}
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:173)
at java.awt.Window.<init>(Window.java:437)
at java.awt.Frame.<init>(Frame.java:419)
at javax.swing.JFrame.<init>(JFrame.java:218)
at org.jfree.ui.ApplicationFrame.<init>(ApplicationFrame.java:65)
{code}
如果设置了export DISPLAY=:0 而没有安装 x11-libs/libX11,出错如下:
{code}
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.catalina.startup.Bootstrap.load(Unknown Source)
at org.apache.catalina.startup.Bootstrap.main(Unknown Source)
Caused by: java.util.ServiceConfigurationError: sun.java2d.cmm.PCMM:
Provider sun.java2d.cmm.lcms.LCMS could not be instantiated:
java.lang.UnsatisfiedLinkError: /opt/icedtea6-bin-1.8.1/jre/lib/amd64/xawt/libmawt.so: libX11.so.6: cannot open shared object
file: No such file or directory
at java.util.ServiceLoader.fail(ServiceLoader.java:224)
at java.util.ServiceLoader.access$100(ServiceLoader.java:181)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:370)
at java.util.ServiceLoader$1.next(ServiceLoader.java:438)
at sun.java2d.cmm.CMSManager$1.run(CMSManager.java:65)
at java.security.AccessController.doPrivileged(Native Method)
at sun.java2d.cmm.CMSManager.getModule(CMSManager.java:55)
at java.awt.color.ICC_Profile.activateDeferredProfile(ICC_Profile.java:1100)
at java.awt.color.ICC_Profile$1.activate(ICC_Profile.java:741)
at sun.java2d.cmm.ProfileDeferralMgr.activateProfiles(ProfileDeferralMgr.java:93)
at java.awt.color.ICC_Profile.getInstance(ICC_Profile.java:774)
at java.awt.color.ICC_Profile.getInstance(ICC_Profile.java:994)
at java.awt.color.ICC_Profile.getInstance(ICC_Profile.java:959)
at java.awt.color.ICC_Profile$2.run(ICC_Profile.java:910)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.color.ICC_Profile.getStandardProfile(ICC_Profile.java:905)
at java.awt.color.ICC_Profile.getInstance(ICC_Profile.java:866)
at java.awt.color.ColorSpace.getInstance(ColorSpace.java:321)
at com.sun.imageio.plugins.jpeg.JPEG.<clinit>(JPEG.java:217)
at com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi.<init>(JPEGImageReaderSpi.java:45)
at javax.imageio.spi.IIORegistry.registerStandardSpis(IIORegistry.java:175)
at javax.imageio.spi.IIORegistry.<init>(IIORegistry.java:137)
at javax.imageio.spi.IIORegistry.getDefaultInstance(IIORegistry.java:159)
at javax.imageio.ImageIO.<clinit>(ImageIO.java:64)
at org.apache.catalina.core.JreMemoryLeakPreventionListener.lifecycleEvent(JreMemoryLeakPreventionListener.java:138)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:770)
at org.apache.catalina.startup.Catalina.load(Catalina.java:524)
at org.apache.catalina.startup.Catalina.load(Catalina.java:548)
... 6 more
Caused by: java.lang.UnsatisfiedLinkError:
/opt/icedtea6-bin-1.8.1/jre/lib/amd64/xawt/libmawt.so: libX11.so.6:
cannot open shared
object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1750)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1646)
at java.lang.Runtime.load0(Runtime.java:787)
at java.lang.System.load(System.java:1022)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1750)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1667)
at java.lang.Runtime.loadLibrary0(Runtime.java:840)
at java.lang.System.loadLibrary(System.java:1047)
at sun.java2d.cmm.lcms.LCMS$1.run(LCMS.java:94)
at java.security.AccessController.doPrivileged(Native Method)
at sun.java2d.cmm.lcms.LCMS.<clinit>(LCMS.java:88)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:362)
... 32 more
{code}
=================
这个事情耗费了我近两天的时间,哪位仁兄在gentoo下面也遇到这个问题了?麻烦赐教,给个好的解决方案。
为方便调试,我建立了个缺省包的JAVA文件,可以编译调试
javac -cp ./jcommon-1.0.16.jar:./jfreechart-1.0.13.jar ChartDemo.java java -cp ./jcommon-1.0.16.jar:./jfreechart-1.0.13.jar:. ChartDemo
在附件中下载该类和依赖jar包(一个简单的java文件和两个依赖包)。
===================================================================
最终解决方案:
以上问题的出现,是一个大错误导致。代码本身写的就有问题,就用到了图形界面的东西,怪不得人家要是要求X11服务呢?
如果你继承了 org.jfree.ui.ApplicationFrame 在此基础上写,就会出现问题
所以请不要继承他,画图的地方直接画就是了,也用不着这个父类的啥方法。
恨啊,没看那段代码是如何写的。后面做了这么多测试。
- ChartDemo.rar (1.5 MB)
- 下载次数: 82
发表评论
-
如何使用JVisualVM进行性能分析
2011-09-25 22:32 84863地址:https://visualvm.dev.java.ne ... -
JDK5中的concurrent包、线程池
2011-02-19 23:43 5030concurrent并发包里面几个 ... -
如何利用 JConsole观察分析Java程序的运行,进行排错调优
2010-11-12 18:38 187061一、JConsole是什么 从Java 5开始 引入 ... -
JAVA NIO 详解Buffer类
2010-10-19 11:21 16533讲得很好,转载一下:http://www.java1995 ... -
简单的记录下 jconsole 查看远程机器的JAVA程序运行状况
2010-09-07 14:31 1767简单实用 远端: java \ ... -
项目管理 进度表
2010-06-27 14:43 3975项目管理中很重要的一部分 进度管理,进度管理又牵扯到进度表 ... -
JAVA基础 对象克隆 实现java.lang.Cloneable接口
2010-04-23 13:46 6053先来看看JDK的解释: ... -
深入浅出Java 类加载器
2010-03-05 11:42 4465简介: 类加载 ... -
Jave EE 6特性:依赖注入、Bean验证和EJB增强
2009-12-18 16:19 2055Java EE 的最新版本提供 ... -
JVM优化之调整大内存分页(LargePage)
2009-11-26 12:50 4196http://kenwu.me/tune-large-page ... -
java内存模型详解
2009-11-26 12:30 2441好读书求甚解,共享展 ... -
JVM调优总结(一)一些概念
2009-11-24 14:43 1453原文地址:http://pengjiahe ... -
CentOS 5.2下配置Java和TOMCAT环境
2009-10-17 14:29 3735安装JDK: 1、下载解压(tar zxvf jdk.. ... -
web项目定时执行任务
2009-08-27 18:19 4295xml文件内容-监听器 < ... -
JAVA多线程的控制JAVA 5.0
2009-08-20 13:38 19970在Java 5.0之前启动一个任务是通过调用Thre ... -
JDK自带VM分析工具jps,jstat,jmap,jconsole
2009-08-09 10:24 35205一、概述 SUN ... -
log4j入门与提高-实例讲解
2009-08-04 09:47 6856官方网站:http://logging.apache.org/ ... -
获取Servlet运行环境信息-Servlet自身信息、Servlet服务器端信息和Servlet客户端信息
2009-07-08 15:01 7187在Servlet中可以很方便的获取各种运行环境信息,这些信 ... -
使用Perf4J进行性能分析和监控
2009-06-19 10:28 3515作者 Alex Devine 译者 崔 ... -
JAVA版PCX图象的RLE算法压缩与解压缩
2009-05-26 17:09 5940丰富JE的博客,把上大学时候的一个算法,搬过来,大概是2007 ...
相关推荐
解决gentoo系统在忘记密码无法登录的情况下,通过修改启动脚本,进入命令行修改登录密码,或者更改etc目录的权限
gentoo下的配置方法以及常见问题的分析。这个文件也是我从网上下的,希望对开源人士有些帮助。非常感谢原作者。
gentoo下源码安装postfix+courier-imap+extmail,论坛上截来的。
追求极限的配置、性能,以及顶尖的用户和开发者社区,都是Gentoo体验的标志特点。 Gentoo的哲学是自由和选择。得益于一种称为Portage的技术,Gentoo能成为理想的安全服务器、开发工作站、专业桌面、游戏系统、嵌入式...
Gentoo Linux 安装笔记 Gentoo Linux 安装笔记 Gentoo Linux 安装笔记
Gentoo Linux是一套通用的、快捷的、完全免费的Linux发行,它面向开发人员和网络职业人员。与其他发行不同的是,Gentoo Linux拥有一套先进的包管理系统叫作Portage。在BSD ports的传统中,Portage是一套真正的自动...
Gentoo Linux nVidia指南
《Gentoo_Linux常见问题》.pdf 《Gentoo_Linux常见问题》.pdf
在Gentoo Linux下绘制高质量的PostScript矢量图形.pdf
gentoo的bash配置文件,用于获得gentoo默认控制台颜色。 将.bashrc复制到/etc/skel/目录下,将bash.bashrc复制到/etc目录下即可。
Gentoo Linux 安装手册, Gentoo Linux安装完整教程, 内容详细, 包你一次就会, 绝对精彩. Gentoo Linux 安装手册完整教程!
本文详细讲述gentoo桌面环境gnome-light的安装过程,如何配置主机网络,如何让gentoo支持中文,如何挂载windows下的NTFS文件系统,如何使gentoo支持声音 的输入输出,让你的emerge极大地加快下载速度,并安装音视频...
gentoo下终端的环境设置,使用linux感觉gentoo的终端非常好,替换之后重新登陆生效。
gentoo 图解安装手册 良好学习文档
gentoo完美技术手册,您需要的尽在其中!~
Gentoo的手册,中文,对安装和研究linux很有帮助。 gentoo是很独特的发行版,和其他不同,安装需要手动一步步进行,软件安装也类似freebsd的port方式。具有高度定制性。
Gentoo Linux x86手册.pdf
Gentoo Linux AMD64 手册
对于初学gentoo有很的帮助,内容广泛,具体,可以随时查阅。
vmware中安装gentoo详解