linux下无法加载验证码问题

来源:互联网 发布:网络电话攻击软件 编辑:程序博客网 时间:2024/05/20 05:30
写了一个servlet生成验证码,但是页面加载不了验证码,后台报错,搞了好几个小时,按网上方法也设置,还是不行,最后解决方案:
错误如下:
java.lang.UnsatisfiedLinkError: /opt/jdk1.7/jre/lib/i386/libfontmanager.so: libgcc_s.so.1: cannot open shared object file: 
No such file or directory
    java.lang.ClassLoader$NativeLibrary.load(Native Method)
    java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1937)
    java.lang.ClassLoader.loadLibrary(ClassLoader.java:1843)
    java.lang.Runtime.loadLibrary0(Runtime.java:870)
    java.lang.System.loadLibrary(System.java:1122)
    sun.font.FontManagerNativeLibrary$1.run(FontManagerNativeLibrary.java:61)
    java.security.AccessController.doPrivileged(Native Method)
    sun.font.FontManagerNativeLibrary.<clinit>(FontManagerNativeLibrary.java:32)
    sun.font.SunFontManager$1.run(SunFontManager.java:339)
    java.security.AccessController.doPrivileged(Native Method)
    sun.font.SunFontManager.<clinit>(SunFontManager.java:335)
    java.lang.Class.forName0(Native Method)
    java.lang.Class.forName(Class.java:348)
    sun.font.FontManagerFactory$1.run(FontManagerFactory.java:82)
    java.security.AccessController.doPrivileged(Native Method)
    sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
    java.awt.Font.getFont2D(Font.java:491)
找不到libgcc_s.so.1文件。

1.先安装gcc、gcc-c++依赖环境

yum -y install gcc

yum -y install gcc-c++

2.安装之后,再在catalina.sh中找到下段脚本

-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
        -sourcepath "$CATALINA_HOME"/../../java \
        -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 \

通过上2步骤后重启服务,又报下错误:

安装后,出现如下错误:
java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager
    java.lang.Class.forName0(Native Method)
    java.lang.Class.forName(Class.java:348)
    sun.font.FontManagerFactory$1.run(FontManagerFactory.java:82)
    java.security.AccessController.doPrivileged(Native Method)
    sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
    java.awt.Font.getFont2D(Font.java:491)
    java.awt.Font.access$000(Font.java:224)
    java.awt.Font$FontAccessImpl.getFont2D(Font.java:228)
    sun.font.FontUtilities.getFont2D(FontUtilities.java:180)
    sun.java2d.SunGraphics2D.checkFontInfo(SunGraphics2D.java:669)
    sun.java2d.SunGraphics2D.getFontInfo(SunGraphics2D.java:830)
    sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:50)
linux下图形界面显示问题
3.在servlet代码中加上
 static {
            System.setProperty("java.awt.headless","true");
 }
通过开启headless模式,问题解决。
原创粉丝点击