- PR -

LinuxとWindows

投稿者投稿内容
totto
会議室デビュー日: 2005/04/20
投稿数: 13
投稿日時: 2005-06-04 14:42
画像処理を含んだwebアプリケーション作成してるのですが、
Windowsでサーブレットをコンパイルすると、エラーはでないのですが、
サーバーがわのLinux(FedoraCore3)でコンパイルしようとすると、
次のようなエラーがたくさん出てきてしまいます。
[root@www test]# javac -classpath /usr/jakarta-tomcatー5.0.28/common/lib/servlet-api.jar exhibit_002dcheck_jsp.java

exhibit_002dcheck_jsp.java:5: package javax.servlet.jsp does not exist
import javax.servlet.jsp.*;
^
exhibit_002dcheck_jsp.java:8: package org.apache.jasper.runtime does not exist
public final class exhibit_002dcheck_jsp extends org.apache.jasper.runtime.HttpJspBase
^
exhibit_002dcheck_jsp.java:9: package org.apache.jasper.runtime does not exist
implements org.apache.jasper.runtime.JspSourceDependent {
^
exhibit_002dcheck_jsp.java:27: cannot resolve symbol
symbol : class JspFactory
location: class org.apache.jsp.test.exhibit_002dcheck_jsp
JspFactory _jspxFactory = null;
^
exhibit_002dcheck_jsp.java:28: cannot resolve symbol
symbol : class PageContext
location: class org.apache.jsp.test.exhibit_002dcheck_jsp
PageContext pageContext = null;

うんぬんかんぬん・・・・・・・・・・・・・・・・

java.servlet.jsp.*ってTomcat自身がJSP→Serveletに変換したときに作成された奴だと
思うのですが、これが存在しないとはどういうことでしょうか?
サーバー側では、Tomcat5.0.28 J2sdk1.4.2-08でコンパイルしました。
totto
会議室デビュー日: 2005/04/20
投稿数: 13
投稿日時: 2005-06-04 15:11
すいません!!質問の仕方を変えますm(_ _)m
Windowsでページを閲覧することができるのですが、
サーバにアップロードし、閲覧しようとすると、次のような
エラーが発生してしまいます。
java.lang.NoClassDefFoundError
com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi.createReaderInstance(JPEGImageReaderSpi.java:89)
javax.imageio.spi.ImageReaderSpi.createReaderInstance(ImageReaderSpi.java:296)
javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:488)
beans.GraphicControll.getReader(GraphicControll.java:105)
beans.GraphicControll.getImageSize(GraphicControll.java:80)
org.apache.jsp.exhibit_002dcheck_jsp._jspService(exhibit_002dcheck_jsp.java:157)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


これは、どういうことなんでしょうか?どなたかお願いします。
YOU@IT
ぬし
会議室デビュー日: 2002/03/29
投稿数: 284
お住まい・勤務地: 大阪
投稿日時: 2005-06-04 16:19
JPEGImageReaderSpi.createReaderInstance() と言うメソッドを見ると、
com.sun.imageio.plugins.jpeg.JPEGImageReaderを言うクラスをインスタンス化
しようとしているようです。

NoClassDefFoundErrorと言うエラーから、Windows側のJREにはこのクラスがあるのに、
サーバ(Linux)側のJREには無いのではないでしょうか。

WinとLinuxそれぞれの(実行時の)JREのバージョンはどうなってますか?
totto
会議室デビュー日: 2005/04/20
投稿数: 13
投稿日時: 2005-06-04 23:19
YOU@ITさん、返信ありがとうございます。
そうじゃないかと思って、僕も調べようとはしたんですが、
J2SDKのフォルダーをみてもそのクラス(パッケージ)が存在するかどうか
がよくわかりませんでした。
どこを見れば、そのクラスがあるかどうかというのはわかるのでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-06-04 23:36
javaのライブラリは大抵 .jar とか .zip ってファイルに zip 形式でアーカイブされています。
手当たり次第 jar ファイルや zip を解凍してみれば出てくるかもしれません。
まぁ、有無については Class.forName("クラス名"); で NoClassDefFoundError が出るかでないかでも判断できますが。
ライブラリの中身を確認する専用のユーティリティ↓とかもあります。
http://yusuke.homeip.net/waraji/
Keisuke
大ベテラン
会議室デビュー日: 2003/10/24
投稿数: 105
投稿日時: 2005-06-06 10:49
手当たりしだいでは不効率ですね。
http://www.jarhoo.com/ なんてのもあります。
さくらば
大ベテラン
会議室デビュー日: 2002/11/12
投稿数: 145
投稿日時: 2005-06-06 15:54
こんにちは、さくらばです。

引用:

tottoさんの書き込み (2005-06-04 23:19) より:
J2SDKのフォルダーをみてもそのクラス(パッケージ)が存在するかどうか
がよくわかりませんでした。
どこを見れば、そのクラスがあるかどうかというのはわかるのでしょうか?



このクラスは Image I/O で使われているもので、J2SE 1.4 以降で
あれば標準で提供されているクラスです。

たぶん、JPEG のイメージをロードしようとして ImageIO.read メソッド
をコールされたのではないですか?

Linux でも、J2SE 1.4 以降であれば普通に使えるはずです。
Linux にインストールした Java のバージョンを調べなおしたほうが
いいのではないでしょうか。

ちなみに、ソースは src.zip には入ってません。
以下の URL からダウンロードできます。
http://www.sun.com/software/communitysource/j2se/java2/download.xml

また、クラスファイルは rt.jar に入っているので、jar コマンドで
展開して、クラスが入っているかどうか確かめることができますよ。
taka
会議室デビュー日: 2005/05/03
投稿数: 14
投稿日時: 2005-06-07 01:28
クラスがあるかどうか調べたいだけなら、javaコマンドで実行して、エラーメッセージで判別でもいいかと。
クラスがないか、mainメソッドがないか。

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