- PR -

LinuxサーバーでPDFが出力できない

1
投稿者投稿内容
マシェ
会議室デビュー日: 2005/10/12
投稿数: 13
投稿日時: 2005-11-16 14:28
 マシェと申します。

 JasperReportsをWeb(Struts)で使って、PDFを出力しようとしています。
帳票のレイアウトはiReportで作成します。
WindowsサーバーではPDFは出力できたのですが、LinuxサーバーでPDFを出力しようとした場合に以下のようなエラーが発生します。

【Windows環境】
OS:Windows2000 Professional
APサーバ:Tomcat 5.0.28

【Linux環境】
Fedora Core 3.0
Webサーバー:Apache 2.0.52
APサーバ:Tomcat 5.0.28

【ツール】
IDE:Eclipse3.0.2
PDFレイアウト作成ツール:iReport-0.5.1

【ライブラリ(すべてtomcat/common/lib/に配置)】
jasperreports-1.0.3.jar
itext-1.3.jar
iTextAsian.jar
commons-beanutils-1.5.jar
commons-collections-3.1.jar
commons-digester-1.7.jar
commons-logging-1.0.2.jar

【WindowsのCLASSPATH】
C:/Apache Group/Tomcat 5.0/commo/lib/jasperreports-1.0.3.jar
C:/Apache Group/Tomcat 5.0/commo/lib/itext-1.3.jar
C:/Apache Group/Tomcat 5.0/commo/lib/iTextAsian.jar

【LinuxのCLASSPATH】
/usr/local/tomcat/common/lib/jasperreports-1.0.3.jar
/usr/local/tomcat/common/lib/itext-1.3.jar
/usr/local/tomcat/common/lib/iTextAsian.jar

【エラー内容】
java.lang.NoClassDefFoundError
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Class.java:141)
java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:62)
net.sf.jasperreports.engine.util.JRGraphEnvInitializer.initializeGraphEnv(JRGraphEnvInitializer.java:58)
net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:467)
・・・・・・・・・・・・(省略)

【Javaプログラム】
//レポートコンパイラーのクラスパスをセット
JRProperties.setProperty(JRProperties.COMPILER_CLASSPATH, "jasperreportsまでのパス");
//デザインXMLファイルのコンパイル
jasperDesign = JRXmlLoader.load( ".jrxmlファイルまでのパス");
compiler = JRDefaultCompiler.getInstance();
jasperReport = compiler.compileReport( jasperDesign );
//データの動的バインド
paramMap = new HashMap();
paramMap.put("test", "テスト");
jasperPrint = JasperFillManager.fillReport(jasperReport, paramMap, (JRDataSource)null);
//PDFへ出力
JasperExportManager.exportReportToPdfFile(jasperPrint, "PDF作成する場所");

LinuxではCLASSLPATHを設定するだけではだめなのでしょうか?
どなたか助言お願いいたします。


[ メッセージ編集済み 編集者: マシェ 編集日時 2005-11-16 15:28 ]
さる
ぬし
会議室デビュー日: 2005/07/14
投稿数: 276
お住まい・勤務地: 実家戻ったw
投稿日時: 2005-11-16 15:25
WinとLinuxではパスの書き方(?)が違うってのをどっかで見ましたね。
同じ問題かな?
マシェ
会議室デビュー日: 2005/10/12
投稿数: 13
投稿日時: 2005-11-16 15:32
返信ありがとうございます。
パスの書き方を調査してみます。
何か他にも情報がありましたらお願い致します。
おっきー
大ベテラン
会議室デビュー日: 2003/05/01
投稿数: 104
投稿日時: 2005-11-16 15:35
内部で awt パッケージを利用しているようですね。
awt を利用するためには X環境を整える必要があります。
Xなしだと結構面倒だったと思います。

ハツキタツミ
大ベテラン
会議室デビュー日: 2005/05/24
投稿数: 108
投稿日時: 2005-11-16 15:52
$CATALINA_HOME/common/lib や WEB-INF/lib にjarをセットしているのであれば、
CLASSPATH云々ではない気がしますが...

NoClassDefFoundError なので足りないライブラリがあるだけでは?

引用:

おっきーさんの書き込み (2005-11-16 15:35) より:
内部で awt パッケージを利用しているようですね。
awt を利用するためには X環境を整える必要があります。
Xなしだと結構面倒だったと思います。



X関連のエラー(でもこの場合はNoClassDefFoundErrorにはならないなぁ)の場合であれば、
JVMの起動オプションに
java.awt.headless=true
でOKかと。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2005-11-16 15:53
こんにちは。

Xサーバを起動するか、

Tomcatの catalina.sh に

JAVA_OPTS=-Djava.awt.headless=true

と入力すると、でるとおもいますよ。
マシェ
会議室デビュー日: 2005/10/12
投稿数: 13
投稿日時: 2005-11-16 19:38
たくさんの返信ありがとうございます。
教えて頂いた通り、Tomcatの catalina.sh にJAVA_OPTS=-Djava.awt.headless=trueを追加した所、PDFを出力できるようになりました。
皆様、本当にありがとうございました。
1

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