centosでの古いXライブラリをインストール

  • 現象

Applet→Servlet間の画像の送受信時にException
new GZIPOutputStream(new Base64EncodeStream(new URLEncodeStream(new BufferedOutputStream(out))))
↑をServletに送信した
送信したらException発生。catalina.outを確認したら「Not in GZIP format」という見たことないExceptionを発見
java.io.IOException: Not in GZIP format
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:131)
at java.util.zip.GZIPInputStream.(GZIPInputStream.java:58)
at java.util.zip.GZIPInputStream.(GZIPInputStream.java:68)
at **.**.*************.******.*******.command.SaveMyDesignCmd.execute(SaveMyDesignCmd.java:509)
at **.**.*************.******.*******.http.DispatchServlet.execute(DispatchServlet.java:159)
at **.**.*************.******.*******.http.DispatchServlet.doPost(DispatchServlet.java:61)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
以下略・・・


logディレクトリにあるlocalhost_log.2007-01-10.txt中身は以下の通り
java.lang.UnsatisfiedLinkError: /usr/java/j2sdk1.4.2_12/jre/lib/i386/libawt.so: libXp.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:1586)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1503)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.image.ColorModel.loadLibraries(ColorModel.java:188)
at java.awt.image.ColorModel.(ColorModel.java:196)
at javax.imageio.ImageTypeSpecifier$Packed.(ImageTypeSpecifier.java:275)
at javax.imageio.ImageTypeSpecifier.createPacked(ImageTypeSpecifier.java:327)
at javax.imageio.ImageTypeSpecifier.(ImageTypeSpecifier.java:63)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.(JPEGImageReader.java:191)
at com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi.createReaderInstance(JPEGImageReaderSpi.java:89)
at javax.imageio.spi.ImageReaderSpi.createReaderInstance(ImageReaderSpi.java:296)
at javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:488)
at javax.imageio.ImageIO.read(ImageIO.java:1381)
at javax.imageio.ImageIO.read(ImageIO.java:1306)
at **.**.*************.******.*******.command.SaveMyDesignCmd.execute(SaveMyDesignCmd.java:514)
at **.**.*************.******.*******.http.DispatchServlet.execute(DispatchServlet.java:159)
at **.**.*************.******.*******.http.DispatchServlet.doPost(DispatchServlet.java:61)
以下略・・・・

つまりjre/lib/i386/libawt.soをリンクしている先のlibXp.so.6が存在しないということだった。
コレが原因。
解決としてはyumコマンドで古いライブラリをインストールしてあげること
参考サイト:http://tougo.at.webry.info/200503/article_2.html
 libstdc++.so.5, libXp.so.6 が無いと言われるので
 下記ライブラリをインストールしてOK。

 # yum install compat-libstdc++-33
 # yum install xorg-x11-deprecated-libs.i386