- PR -

MVCサンプルが動作してくれません(ToT)

投稿者投稿内容
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2004-07-12 10:03
引用:

kokkoさんの書き込み (2004-07-12 05:36) より:
無名パッケージでBeanを作成すると、JSPから事前にServletのソースコードを
生成する際にJSPからWEB-INF/classes配下のBeansすらも参照できないのは
なぜなのでしょうか?



「そういう言語仕様だから」じゃ答えになってませんかね?(;^ ^)
http://java.sun.com/j2se/1.4/ja/compatibility.html#incompatibilities1.4
ここの8.をご覧下さい。J2SE1.4からコンパイラの動作が変わり、
これは厳密に言うと言語仕様に準拠していないコードをコンパイルできなくなりました。
無名パッケージのクラスをインポートするコードもそれに該当します。

「Tomcat3.xならできる」というのは、SDKのバージョンの違いをTomcatのバージョンの違いと
勘違いしたものと思われます。
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2004-07-12 10:05
引用:

syoさんの書き込み (2004-07-11 22:21) より:
お世話になっております。

JavaBeanとして処理を行う場合、Serializableインタフェースをimplementsする必要があります。MVCBeanクラスにおいてimplements Serializableを付加してみてください。



 必須じゃありませんよ。
オブジェクトをファイルに保存する必要が無ければいりません。
普通に、デフォルトの設定で、Tomcatを1つ使うだけなら、いりませんね・・・。

引用:

kokkoさんの書き込み (2004-07-12 05:36) より:
解決しました!
MVCBeanクラスにpackageを設定していなかったのが原因でした。
つまりJSPからMVCBeanへの参照ができなったということです。
色々なページを探しまくってよーやく解決できました。
取り急ぎ、皆様に感謝です。

ただ、同様なエラーのケースで明示的に
<%@ page import="MVCBean" %>
とするとできるよ、という回答例も見つかりましたが、これは駄目でした。
やはり同様にMVCBeanクラスが参照できないようです。
# Tomcat3ではできたという噂も。。。


 仰るように、Tomcat3.xまでは、無名パッケージのBeanもOKでした。
ですが、Tomcat4.xからこれはNGとなりました。
これって、かなりメジャーな質問なので、
ちょっと探せば、出てくるはずです。
おがわ
大ベテラン
会議室デビュー日: 2001/08/01
投稿数: 199
お住まい・勤務地: 千葉県
投稿日時: 2004-07-12 10:09
無名パッケージをimportできなくなった規則は,Java 1.4言語仕様より追加されました。

[URL]
http://java.sun.com/j2se/1.4/ja/compatibility.html

JDK 1.4以前の開発環境をもとに解説されているような,多少発行時期の古い書籍で学習すると,この制限によくぶち当たるようです。
また,Java 1.4から学習を始めたJava初心者も,一回は必ず体験しているようです。
kokko
会議室デビュー日: 2004/07/11
投稿数: 7
投稿日時: 2004-07-13 01:53
koeさん、takuさん、SuperCreekさん
ご回答有難うございますっ!!

> Java 1.4言語仕様より追加されました。

お蔭様で納得できました。
調べ方が悪かったようです。反省…。
大変勉強になりました。m(_ _)m

> 一回は必ず体験しているようです。

セオリー通りですね。(^-^
ただ、これだけに約1週間悩んだのは痛かったです…。

解決能力の未熟さ故、今後もお世話になると思いますが
そのときはご助言宜しくお願い致します。
もっと×2勉強して、皆さんのように人助けできるよう
になりたいです。
syo
常連さん
会議室デビュー日: 2003/08/17
投稿数: 43
投稿日時: 2004-07-13 09:43
お世話になっております。

引用:

takuさんの書き込み (2004-07-12 10:05) より:

 必須じゃありませんよ。(^_^;)
オブジェクトをファイルに保存する必要が無ければいりません。
普通に、デフォルトの設定で、Tomcatを1つ使うだけなら、いりませんね・・・。




 あら、そうだったんですか(^^;;

 最初にJSPを勉強した書籍の、JavaBeanの定義のところでそのように書かれていたので、いつもSerializableインタフェースをimplementsするようにしていました・・・。
おがわ
大ベテラン
会議室デビュー日: 2001/08/01
投稿数: 199
お住まい・勤務地: 千葉県
投稿日時: 2004-07-13 10:26
引用:

syoさんの書き込み (2004-07-13 09:43) より:

 あら、そうだったんですか

 最初にJSPを勉強した書籍の、JavaBeanの定義のところでそのように書かれていたので、いつもSerializableインタフェースをimplementsするようにしていました・・・。



後々のこと(例えば,Web実行環境が変更されたり,仕様変更等でJavaBeanをセッションに保存するようにコードを修正する,など...)を考慮すると,画面やモジュール間でI/Fさせる中間情報を定義しているクラスにはSerializableを必ずマーキングしておく,という癖をつけておいたほうがいいと思いますよ。

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