- PR -

パッケージのimportについて

1
投稿者投稿内容
tata
会議室デビュー日: 2004/09/06
投稿数: 19
投稿日時: 2004-11-13 04:33
JSP&サーブレットについて勉強中のtataです。

環境
Win98
j2sdk1.4.2_04
Tomcat4.1.30

フォルダ階層(わかりにくくてすいません。)
C:/Tomcat 4.1
・+common
・+cof
・+webapps
・・・・・+mysamples
・・・・・・・・・+(HTMLファイルとJSPファイル)
・・・・・・・・・+web-inf
・・・・・・・・・・・・・+(web.xml)
・・・・・・・・・・・・・+classes
・・・・・・・・・・・・・・・・・+(サーブレット)
・・・・・・・・・・・・・・・・・+mypackage
・・・・・・・・・・・・・・・・・・・・・+A.java(Beanとして利用したい)

質問ですが、
A.javaには「package mypackage;」と宣言していますが、
サーブレットから「import mypackage.A;」としてアクセスできません。
JSPから「<%@ page import="mypackage.A" %>としてアクセスできます。

参考書ではこのSectionを学ぶにあたって、特にファイルの格納場所の指示がないので上記のとおりにそれぞれ格納しています。

サーブレットを/common/lib/servlet.jarでコンパイルすると「パッケージ mypackageは存在しません」と表示されます。その他はAの参照変数を指して「シンボルを解決できません」と数箇所表示されるだけです。

JSPのみ、サーブレットのみ、HTMLとJSPの連携、HTMLとサーブレット連携は現在もできますので、servlet.xml、web.xmlの設定はあってると思います。

ちなみにHTMLからサーブレットへ値を渡してBean(A.java)に処理をさせるということをしようとしています。

どなたかおわかりになる方、どうかご教授お願いします。また、ご質問等もお申し付けください。よろしくお願いします。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-11-13 09:38
サーブレットをどのようにコンパイルしていますか? 何もしなくてもWEB-INF/classes以下を
参照してくれるのは実行時だけですので、コンパイル時にはWEB-INF/classesもクラスパスに
設定する必要があります。
tata
会議室デビュー日: 2004/09/06
投稿数: 19
投稿日時: 2004-11-13 19:23
お返事ありがとうございます。ukさん。

コンパイルの方法は
C:\Tomcat 4.1\webapps\mysamples\WEB-INF\classes>javac -classpath C:\TOMCAT~1.1\COMMON\LIB\SERVLET.JAR Sample.java
としてます。-classpath以降に「servlet.jar」をDrag&Dropしてます。

javac -classpath C:\Tomcat4.1\common\lib\servlet.jar Sample.java
と手入力(Tomcatと4.1の間に空白ありだと読み取られないみたいなので空白を省いてます)
すると、同ファイル中でimportしているHttpServletRequestやHttpServletResponse、ServletExceptionなども「シンボルを解決できません」と表示されます。

「\」は円マークです。
「TOMCAT〜1.1」の「〜」は半角で上のほうに表示される記号です。

これでお答えになってますでしょうか。よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-11-13 22:16
ukさんの仰るとおりクラスパスの問題ですよね?
*WEB-INF/classes をクラスパスに入れる必要がある*という説明の意味がわからないのでしょうか?
tata
会議室デビュー日: 2004/09/06
投稿数: 19
投稿日時: 2004-11-14 01:03
ありがとうございます。インギさん。

正直わかりません。
javac -classpath C:\Tomcat4.1\webapps\mysamples\WEB-INF\classes;C:\Tomcat4.1\common\lib\servlet.jar Sample.java
としてみたのですが実行できませんでした(Aの参照変数を指して「シンボルを解決できません」と表示されます)。

・A.javaでは
package mypackage;
・Sample.java(サーブレット)
import mypackage.A;
と記述しています。

参考HP http://www.gimlay.org/~javafaq/S004.html#S004-02

よろしければクラスパスの設定をどうすればいいのか教えていただけないでしょうか。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-11-14 01:21
>javac -classpath C:?Tomcat4.1?webapps?mysamples?WEB-INF?classes;>C:?Tomcat4.1?common?lib?servlet.jar Sample.java
この方法なら指定に問題はないですね。
#2004-11-13 19:23 の書き込みでは WEB-INF?classes がクラスパスに通してありませんでした

あれ?よく確認すると
>・・・・・・・・・・・・・・・・・+mypackage
>・・・・・・・・・・・・・・・・・・・・・+A.java(Beanとして利用した
クラスパスにソースファイルが配置されているようです。"classes"フォルダですからクラスファイルを配置しましょう。
tata
会議室デビュー日: 2004/09/06
投稿数: 19
投稿日時: 2004-11-14 01:56
お返事ありがとうございます。インギさん。

>#2004-11-13 19:23 の書き込みでは WEB-INF?classes がクラスパスに通してありませんでした

ukさんとインギさんからのご回答がなければ、「classpath」は頭にありませんでした。基本的なことを忘れていたというより理解できていなかったです。本当にありがとうございます。
1

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