- - PR -
servlet postgresqlアクセスでのコンパイルエラー
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-11-09 13:49
いつもお世話になっております。
servletからpostgresqlにアクセスするコーディングを行いましたが 下記コンパイルエラーになってしまいました。 パスの設定がうまくできていないような感じがするのですが、手詰まり状態です。 ご指摘のほどよろしくお願いいたします。 【コンパイルエラー内容】 ○classpathに"servlet-api.jar" classes$>javac -classpath /usr/local/jakarta-tomcat-5.0.28/common/lib/servlet-api.jar PrintImage4.java PrintImage4.java:63: Type `LargeObjectManager' not found in the declaration of the local variable `lobj'. LargeObjectManager lobj = ((org.postgresql.PGConnection)connection).getLargeObjectAPI(); ^ PrintImage4.java:76: Type `LargeObject' not found in the declaration of the local variable `obj'. LargeObject obj = lobj.open(oid, LargeObjectManager.READ); ^ 2 errors ○classpathに"servlet-api.jar"と"postgresql743.jar" classes$>javac -classpath /usr/local/jakarta-tomcat-5.0.28/common/lib/servlet-api.jar;/usr/local/jakarta-tomcat-5.0.28/common/lib/postgresql743.jar PrintImage4.java gcj: no input files -bash: /usr/local/jakarta-tomcat-5.0.28/common/lib/postgresql743.jar: cannot execute binary file 【ディレクトリ構成】 +-- common/ +-- lib/ +-- postgresql743.jar +-- servlet-api.jar +-- webapps/ +-- SampleSource/ +-- WEB-INF/ +-- web.xml +-- lib/ +-- postgresql743.jar ★@ +-- classes/ +-- PrintImage4.java ★@postgresql743.jarをcommon/lib/下とWEB-INF/lib/下両方に置いてみました。 【souce import】 import javax.servlet.*; import javax.servlet.http.*; import java.sql.* ; import org.postgresql.largeobjectl.* ;★A ★Apostgresqlのプログラマガイドに"org.postgresql"はインポートしてはいけないと 書いてましがうまくいかないので書いてみました。 【環境】 Redhatlinux 9 tomcat 5.0.28 j2sdk 1.4.2_05 | ||||||||
|
投稿日時: 2004-11-09 14:13
手詰まりですか?エラーメッセージのとおり、シンボル名を解決で
きないだけですよ。 LargeObjectManagerのパッケージ名はそのimport文のどれにも 当てはまっていない+デフォルトパッケージにLargeObjectManager というクラスがないということですね。 #googleで検索したら、LargeObjectManagerのjavadocがすぐ見つ #かりましたが…調べてみましたか?^^; | ||||||||
|
投稿日時: 2004-11-09 14:14
UNIXでは、クラスパス内の要素をセミコロン(;)ではなく、コロン(:)で区切ります。
#顔文字になってしまったので修正 [ メッセージ編集済み 編集者: uk 編集日時 2004-11-09 14:16 ] [ メッセージ編集済み 編集者: uk 編集日時 2004-11-09 14:17 ] | ||||||||
|
投稿日時: 2004-11-09 20:31
シュン様、uk様書き込みありがとうございます。
指摘事項を回答します。 #googleで検索したら、LargeObjectManagerのjavadocがすぐ見つ #かりましたが…調べてみましたか?^^; ⇒調べてみました。 "LargeObjectManager"クラスはpostgresql743.jarの中に入っている らしく、"import java.sql.*;"でimportできるらしいのですが importできないので表題となります。 参考文献は下記URLになります。 UNIXでは、クラスパス内の要素をセミコロン( ![]() ![]() ⇒":"にて指定してあげましたがエラーは変わりませんでした。 下記参考URLによりCLASSPATH設定をいろいろやってみましたが駄目でした。 export CLASSPATH=PrintImage4.java:/usr/local/jakarta-tomcat- 5.0.28/common/lib/postgresql743.jar:/usr/local/jakarta-tomcat-5.0.28/common/lib/servlet-api.jar:. classes$>javac PrintImage4.java 参考URL:http://www.postgresql.jp/document/pg743doc/html/jdbc.html#JDBC-BUILD JSPではうまくコンパイルできましたがservletでうまくコンパイルできません。 他にご指摘などよろしくお願いいたします。 | ||||||||
|
投稿日時: 2004-11-09 20:58
どこを参照したのかはわかりませんが、LargeObjectManagerクラスのパッケージはorg.postgresql.largeobjectです。
最初の書き込みにはエラーが2種類出ていたと思うのですが、どちらのエラーですか? | ||||||||
|
投稿日時: 2004-11-10 18:23
uk様書き込みありがとうございました。
コンパイルがとおり無事実行できました。ありがとうございました。 【原因】 java.sqlパッケージとorg.postgresパッケージとの対応をご認識した為。 下記【対応クラス】のクラスはorg.postgresと対応されているようでしたが、 LargeObjectなどは対応されておりませんでした。 クラスをフルパスで指定してあげることでコンパイルがとおりました。 import org.postgresql.largeobject.LargeObject ; import org.postgresql.largeobject.LargeObjectManager; 【対応クラス】 java.sql.Driver java.sql.Connection java.sql.Statement java.sql.PreparedStatement java.sql.ResultSet どこを参照したのかはわかりませんが、LargeObjectManagerクラスのパッケージはorg.postgresql.largeobjectです。 ⇒PlstgresSQL 7.4.3文書(下記URL)に"org.postgresql パッケージをインポート しないでください"と記載されていた為、誤認識しました。 http://www.postgresql.jp/document/pg743doc/html/jdbc-use.html |
1