- PR -

画像描画にてjava.lang.NoClassDefFoundError

1
投稿者投稿内容
@あまぎ
会議室デビュー日: 2006/08/25
投稿数: 11
投稿日時: 2006-08-25 20:02
開発環境:Win2K、j2sdk1.4.2_11、jakarta-tomcat-5.0.28
サービス環境:Linux、j2sdk1.4.2_10、jakarta-tomcat-5.0.28

gif画像が置いてあるURLを指定して、該当gif画像をファイルに保存せずJSPにて表示するプログラムを作成しようとしています。
開発環境にてEclipseを利用してプログラムを作成&ビルドし、サービス環境で動作させる
予定です。
ImageIOクラスを使用しているのですが、gifの書き込みができないので、
freehep-base.jar、freehep-graphics2d.jar、freehep-graphicsio.jar、freehep-graphicsio-gif.jarをビルドパスに指定しています。
すでに、Windows上では動作することを確認しているのですが、Linux上で動作しません。

以下、Linuxでの問題をまとめました。

エラー:

 Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.

が出たので環境変数に
CATALINA_OPTS="D java.awt.headless = true" export CATALINA_OPTS
を指定したのですが、今度はTomcatのshutdown.sh及びstartup.shを起動すると

エラー:

Exception in thread "main" java.lang.NoClassDefFoundError: D

が発生するようになりました。
また、shutdown.sh及びstartup.shを使わずに該当JSPを確認すると、

エラー:

StandardWrapperValve[jsp]: サーブレット jsp のServlet.service()が例外を投げました
java.lang.NoClassDefFoundError
at org.freehep.graphicsio.gif.GIFImageWriteParam.<init>(GIFImageWriteParam.java:27)
at org.freehep.graphicsio.gif.GIFImageWriter.getDefaultWriteParam(GIFImageWriter.java:71)
at org.freehep.graphicsio.gif.GIFImageWriter.write(GIFImageWriter.java:35)
at javax.imageio.ImageWriter.write(ImageWriter.java:591)

が発生し、これも動作しませんでした。
環境変数の設定の指定が悪いのかと
"を'に変更してみたり、catalina.shの、"start" の、Javaオプションに、
-Djava.awt.headless=trueを追加してみたりしたのですが、どうにも動きません。


以下、JSPのコードです。

==========================================================
<%@ page contentType="text/html;charset=Shift-JIS" pageEncoding="Shift-JIS"
%><%@ page import="java.util.Iterator"
%><%@ page import="java.net.URL"
%><%@ page import="java.awt.image.BufferedImage"
%><%@ page import="javax.imageio.ImageIO"
%><%@ page import="javax.imageio.ImageWriter"
%><%@ page import="javax.imageio.stream.ImageOutputStream "
%><META HTTP-EQUIV="Pragma" content="no-cache"><meta http-equiv="Cache-Control" content="no-cache"><META http-equiv="Expires" content="0"><%

URL url = new URL("gif画像のあるURL");
BufferedImage bimg = ImageIO.read(url);

response.setHeader("Expires", "0");
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache");

response.setContentType("image/gif");

ServletOutputStream sout = response.getOutputStream();

Iterator ite;
ite = ImageIO.getImageWritersByFormatName("gif");

ImageWriter writer = (ImageWriter)ite.next();
ImageOutputStream ios = ImageIO.createImageOutputStream(sout);

writer.setOutput(ios);
writer.write(bimg);

ios.close();
sout.close();

%>
==========================================================================
設定方法や解決方法などなんでもいいのでアドバイスがあれば宜しくお願い致します。
Java僧
ぬし
会議室デビュー日: 2003/11/06
投稿数: 261
投稿日時: 2006-08-25 22:22
CATALINA_OPTSに指定する物の意味がわかっていますか?
ハイフンがないだけでは?
@あまぎ
会議室デビュー日: 2006/08/25
投稿数: 11
投稿日時: 2006-08-28 10:21
Java僧様

ご返答ありがとうございます。
ご指摘の通りハイフンをつけたら動作しました。

CATALINA_OPTS="-Djava.awt.headless=true" export CATALINA_OPTS

本当にありがとうございます。助かりました。

[ メッセージ編集済み 編集者: @あまぎ 編集日時 2006-08-28 10:22 ]
1

スキルアップ/キャリアアップ(JOB@IT)