- - PR -
LinuxとWindows
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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でコンパイルしました。 | ||||
|
投稿日時: 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) これは、どういうことなんでしょうか?どなたかお願いします。 | ||||
|
投稿日時: 2005-06-04 16:19
JPEGImageReaderSpi.createReaderInstance() と言うメソッドを見ると、
com.sun.imageio.plugins.jpeg.JPEGImageReaderを言うクラスをインスタンス化 しようとしているようです。 NoClassDefFoundErrorと言うエラーから、Windows側のJREにはこのクラスがあるのに、 サーバ(Linux)側のJREには無いのではないでしょうか。 WinとLinuxそれぞれの(実行時の)JREのバージョンはどうなってますか? | ||||
|
投稿日時: 2005-06-04 23:19
YOU@ITさん、返信ありがとうございます。
そうじゃないかと思って、僕も調べようとはしたんですが、 J2SDKのフォルダーをみてもそのクラス(パッケージ)が存在するかどうか がよくわかりませんでした。 どこを見れば、そのクラスがあるかどうかというのはわかるのでしょうか? | ||||
|
投稿日時: 2005-06-04 23:36
javaのライブラリは大抵 .jar とか .zip ってファイルに zip 形式でアーカイブされています。
手当たり次第 jar ファイルや zip を解凍してみれば出てくるかもしれません。 まぁ、有無については Class.forName("クラス名"); で NoClassDefFoundError が出るかでないかでも判断できますが。 ライブラリの中身を確認する専用のユーティリティ↓とかもあります。 http://yusuke.homeip.net/waraji/ | ||||
|
投稿日時: 2005-06-06 10:49
手当たりしだいでは不効率ですね。
http://www.jarhoo.com/ なんてのもあります。 | ||||
|
投稿日時: 2005-06-06 15:54
こんにちは、さくらばです。
このクラスは 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 コマンドで 展開して、クラスが入っているかどうか確かめることができますよ。 | ||||
|
投稿日時: 2005-06-07 01:28
クラスがあるかどうか調べたいだけなら、javaコマンドで実行して、エラーメッセージで判別でもいいかと。
クラスがないか、mainメソッドがないか。 |