- PR -

servlet postgresqlアクセスでのコンパイルエラー

1
投稿者投稿内容
ヤミーズ
常連さん
会議室デビュー日: 2004/09/06
投稿数: 27
お住まい・勤務地: 東京都世田谷区
投稿日時: 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/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-11-09 14:13
手詰まりですか?エラーメッセージのとおり、シンボル名を解決で
きないだけですよ。
LargeObjectManagerのパッケージ名はそのimport文のどれにも
当てはまっていない+デフォルトパッケージにLargeObjectManager
というクラスがないということですね。

#googleで検索したら、LargeObjectManagerのjavadocがすぐ見つ
#かりましたが…調べてみましたか?^^;
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-11-09 14:14
UNIXでは、クラスパス内の要素をセミコロン(;)ではなく、コロン(:)で区切ります。

#顔文字になってしまったので修正

[ メッセージ編集済み 編集者: uk 編集日時 2004-11-09 14:16 ]

[ メッセージ編集済み 編集者: uk 編集日時 2004-11-09 14:17 ]
ヤミーズ
常連さん
会議室デビュー日: 2004/09/06
投稿数: 27
お住まい・勤務地: 東京都世田谷区
投稿日時: 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でうまくコンパイルできません。
 他にご指摘などよろしくお願いいたします。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-11-09 20:58
引用:

ヤミーズさんの書き込み (2004-11-09 20:31) より:
  "LargeObjectManager"クラスはpostgresql743.jarの中に入っている
  らしく、"import java.sql.*;"でimportできるらしいのですが
  importできないので表題となります。
  参考文献は下記URLになります。


どこを参照したのかはわかりませんが、LargeObjectManagerクラスのパッケージはorg.postgresql.largeobjectです。

引用:

 ⇒":"にて指定してあげましたがエラーは変わりませんでした。
  下記参考URLによりCLASSPATH設定をいろいろやってみましたが駄目でした。


最初の書き込みにはエラーが2種類出ていたと思うのですが、どちらのエラーですか?
ヤミーズ
常連さん
会議室デビュー日: 2004/09/06
投稿数: 27
お住まい・勤務地: 東京都世田谷区
投稿日時: 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

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