- 浏览: 1789913 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
奔跑的小牛:
例子都打不开
如何使用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 84982地址:https://visualvm.dev.java.ne ... -
JDK5中的concurrent包、线程池
2011-02-19 23:43 5085concurrent并发包里面几个 ... -
如何利用 JConsole观察分析Java程序的运行,进行排错调优
2010-11-12 18:38 187410一、JConsole是什么 从Java 5开始 引入 ... -
JAVA NIO 详解Buffer类
2010-10-19 11:21 16582讲得很好,转载一下:http://www.java1995 ... -
简单的记录下 jconsole 查看远程机器的JAVA程序运行状况
2010-09-07 14:31 1793简单实用 远端: java \ ... -
项目管理 进度表
2010-06-27 14:43 4011项目管理中很重要的一部分 进度管理,进度管理又牵扯到进度表 ... -
JAVA基础 对象克隆 实现java.lang.Cloneable接口
2010-04-23 13:46 6092先来看看JDK的解释: ... -
深入浅出Java 类加载器
2010-03-05 11:42 4515简介: 类加载 ... -
Jave EE 6特性:依赖注入、Bean验证和EJB增强
2009-12-18 16:19 2097Java EE 的最新版本提供 ... -
JVM优化之调整大内存分页(LargePage)
2009-11-26 12:50 4235http://kenwu.me/tune-large-page ... -
java内存模型详解
2009-11-26 12:30 2481好读书求甚解,共享展 ... -
JVM调优总结(一)一些概念
2009-11-24 14:43 1491原文地址:http://pengjiahe ... -
CentOS 5.2下配置Java和TOMCAT环境
2009-10-17 14:29 3774安装JDK: 1、下载解压(tar zxvf jdk.. ... -
web项目定时执行任务
2009-08-27 18:19 4332xml文件内容-监听器 < ... -
JAVA多线程的控制JAVA 5.0
2009-08-20 13:38 20013在Java 5.0之前启动一个任务是通过调用Thre ... -
JDK自带VM分析工具jps,jstat,jmap,jconsole
2009-08-09 10:24 35269一、概述 SUN ... -
log4j入门与提高-实例讲解
2009-08-04 09:47 6908官方网站:http://logging.apache.org/ ... -
获取Servlet运行环境信息-Servlet自身信息、Servlet服务器端信息和Servlet客户端信息
2009-07-08 15:01 7222在Servlet中可以很方便的获取各种运行环境信息,这些信 ... -
使用Perf4J进行性能分析和监控
2009-06-19 10:28 3567作者 Alex Devine 译者 崔 ... -
JAVA版PCX图象的RLE算法压缩与解压缩
2009-05-26 17:09 6023丰富JE的博客,把上大学时候的一个算法,搬过来,大概是2007 ...
相关推荐
解决gentoo系统在忘记密码无法登录的情况下,通过修改启动脚本,进入命令行修改登录密码,或者更改etc目录的权限
- **活跃的论坛**:Gentoo拥有一个非常活跃的官方论坛,用户可以在上面交流经验、解决问题。 - **邮件列表**:除了论坛之外,Gentoo还维护着多个邮件列表,供开发者和用户提供反馈和建议。 - **官方文档**:Gentoo...
《在Gentoo Linux下绘制高质量的PostScript矢量图形》这篇文档主要讲述了如何在Gentoo Linux操作系统中利用Perl语言和ips2ps工具包来创建精确的数学矢量图形。PostScript是一种页面描述语言,常用于生成高质量的图形...
### Gentoo Linux 安装手册知识点详述 #### 一、引言 - **Gentoo Linux**:Gentoo Linux 是一款高度可定制的 Linux 发行版,它以其灵活性和性能著称。用户可以根据自己的需求调整每一个细节,从内核配置到软件包的...
本教程将深入探讨如何在Gentoo系统中通过源码编译安装Postfix邮件服务器、Courier-IMAP IMAP/POP3服务器以及Extmail webmail系统,这些都是构建一个完整邮件服务基础设施的关键组件。 **Postfix** Postfix是一款高...
### Gentoo安装指南 Gentoo是一个为不同需求提供多种选择的Linux发行版,它允许用户根据自己的需求来编译系统,...Gentoo手册提供了丰富的信息资源,帮助用户在安装过程中解决各种问题,以达到熟练使用Gentoo的目标。
Gentoo Linux nVidia指南
Gentoo Linux 是一款专为开发人员和网络专业人士设计的开源操作系统,它的核心特性在于其独特的包管理系统Portage。Portage借鉴了BSD ports系统,但使用Python编写,具备丰富的功能,如文件依赖、精细包管理、虚拟...
本文将深入探讨Gentoo中的bash配置文件,以及如何利用它们来定制控制台的颜色。 首先,我们要了解.bashrc和bash.bashrc这两个文件的作用。`.bashrc`是bash shell的用户级配置文件,通常位于用户的主目录下(`~`)。...
5. **挂载分区**:Code Listing 6中,将分区挂载到/mnt/gentoo下,以便后续安装过程可以访问。同时创建并挂载`/mnt/gentoo/proc`,以模拟进程文件系统。 6. **解开Stage压缩文件**:Code Listing 11中,使用`tar`...
Gentoo支持多种架构,包括x86(32位)和x86_64(64位),以及其他如PowerPC、ARM等。 3. **获取安装介质**: 你可以通过下载Gentoo的LiveCD或LiveUSB镜像来创建安装媒介。这些镜像包含了基本的工具和系统文件,让你...
这部分内容介绍了如何配置和使用这些分支,以及如何在特定情况下选择不同的分支版本。 - **Portage工具集**:Portage提供了多种实用工具,如dispatch-conf等,用于辅助软件包管理和系统维护。这部分内容介绍了这些...
首先,手册介绍了解决如何安装Gentoo Linux的基本概念,包括为何选择Gentoo以及它的优势。接着,手册引导读者选择适合自己的安装方法,如网络安装、LiveCD/DVD安装等,不同的安装方式适用于不同的情况和需求。 配置...
【gentoo手册】是 Gentoo Linux 发行版的官方文档,包含了详尽的系统配置、安装和维护信息。这份手册是2013年的最新版本,由社区成员花费大量时间翻译而成,旨在帮助用户理解和使用Gentoo Linux系统。 在手册中,...
安装Gentoo操作系统的基本步骤包括初始化硬件,安装必要的软件包,设置网络,同步Portage仓库,选择合适的配置文件和分区,以及配置引导加载器。在完成这些基础步骤后,系统将允许用户登录到一个基本的命令行环境。 ...
《Gentoo安装手册》是针对Gentoo Linux操作系统的一份详尽指南,旨在帮助用户完成从下载到安装,再到配置的全过程。这份手册由Gentoo官方提供,经过整理,适合打印以便线下查阅。 在Gentoo Handbook中,首先介绍了...
**Gentoo Linux** 是一个基于源代码的Linux发行版,以其高度的可定制性和灵活性而闻名。与其他预编译二进制包的发行版不同,Gentoo 的安装和软件管理过程涉及到编译和配置源代码,这使得用户能够根据自己的需求精确...