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.
at java.util.zip.GZIPInputStream.
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.
at javax.imageio.ImageTypeSpecifier$Packed.
at javax.imageio.ImageTypeSpecifier.createPacked(ImageTypeSpecifier.java:327)
at javax.imageio.ImageTypeSpecifier.
at com.sun.imageio.plugins.jpeg.JPEGImageReader.
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