• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javaでuseBeanエラーの解決方法)

javaでuseBeanエラーの解決方法

このQ&Aのポイント
  • レンタールサーバーを経営しており、javaを使ってショッピングカートを動かしているお客様からエラー解除してほしいという依頼を受けました。
  • 購入ボタンを押すとError:org.apache.jasper.JasperExceptionが表示され、useBean class attribute Cartの値が無効であるというエラーが発生します。
  • javaの知識がないため、どのファイルのパーミッションを変更すれば良いのか分からず困っています。インターネットで検索しましたが解決策は見つかりませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.4

・bean(フォルダ)の下に 「Cart.class」「Cart.java」がありました。 Cart.java に package bean; の記述があれば <jsp:useBean id="product" scope="session" class="bean.Cart" /> こうね。

heartin_pe
質問者

お礼

askaaska様、ありがとうございます!!!! 解決しました!!!! もう本当にありがとうございます!解決できてすごく嬉しいです。 classの値に「bean」を付けるか付けないかで、こんなにも違うのですね! 今回のことはすごく勉強になりました! 的確なアドバイス本当にありがとうございます! すごく感謝します!!!

その他の回答 (3)

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.3

>Casher.jspの中にある記述はこうです。 ><jsp:useBean id="product" scope="session" class="Cart" /> > >/web/WEB-INF/classesの中にはaskaaskaさんが指摘してくださったCart.classはありませんでした。 >代わりにclassesフォルダの中は >・bean(フォルダ) >・ShopKeeper.class >・ShopKeeper.java んー そのbeanより下にCart.classがあったりしないかしら?

heartin_pe
質問者

補足

askaaskaさん、何度も回答してくださってありがとうございます。 >そのbeanより下にCart.classがあったりしないかしら? ありました。 ・bean(フォルダ)の下に 「Cart.class」「Cart.java」がありました。 ではこの場合、Casher.jspの中の記述は <jsp:useBean id="product" scope="session" class="Cart" /> のままで正しいということでしょうか? 記述が間違っているなら、どのように記述すると正しく動くか分かりますか?

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

Java側に問題がない という相手の主張を信じたら負けよ。 そこもきちんと疑わないとね。 Casher.jspを作ったのが誰だか知らないけど その2行目がおそらく <jsp:useBean id="cart" class="Cart" scope="session" /> こんな感じで書かれているのよね。 ~/WEB-INF/classes/Cart.classが存在しているのかしら? もしもCart.classがパッケージに属していて ~/WEB-INF/classes/shopping/Cart.class (package shopping;という実装がCart.javaにある) <jsp:useBean id="cart" class="shopping.Cart" scope="session" /> こうなるはずよ。

heartin_pe
質問者

補足

早い回答ありがとうございます! 以前同じ現象になった時、サーバー管理側(私達)でパーミッションを変更したら解決したことがあったためお客様は「こちらに負は一切ない!」と豪語されています。 でも2009年9月にサーバーを移動しており、Tomcatバージョン3.2.3からバージョン5.0.28に変わりました。(以前起こった時はバージョン3.2.3での話です) JSP のバージョンも変わっているのでコンパイルに可否が出ているのでは?と問いかけましたが「そんな環境には一切左右されないものだから」ということでした。 javaの知識が無いので「あ、そうなんですか」と2つ返事してしまいましたが・・・(笑) でも仰るとおり、原因を色々な視点で考えるべきですね! Casher.jspの中にある記述はこうです。 <jsp:useBean id="product" scope="session" class="Cart" /> /web/WEB-INF/classesの中にはaskaaskaさんが指摘してくださったCart.classはありませんでした。 代わりにclassesフォルダの中は ・bean(フォルダ) ・ShopKeeper.class ・ShopKeeper.java が入っています。 この場合Casher.jsp内の記述はどうしたら良いのでしょう? (お客様からは、ファイル内を変更する許可はいただいています)

  • nooper
  • ベストアンサー率75% (3/4)
回答No.1

一番確実で早そうな解決方法は、たぶんそのショッピングカートの開発元に問い合わせ、ですね。。。 エラー内容を見る限りはパーミッションが原因の可能性は低そうな気がします。(遠因である可能性はあるかもですが 軽くぐぐってみましたが、考えられるのはこんなところでしょうか。 ----------------------------------------------- ・Tomcatがそのクラスを読み込めていない  ⇒配置すべきファイルに不足はありませんか? ・参照クラスがデフォルトパッケージに配置されていると使えない  ⇒これはもうプログラム側の問題です。 ----------------------------------------------- その他、どうしてもよくわからなくなったときは、 一度すべて消して、もう一度手順見ながら再インストールする、とかも良いかもしれません。 (お客様のコンテンツに勝手にそんなことしていいのか、って問題はおいといて) なお、大量ファイルのパーミッションを変更するのであれば、shell上で、 chmod -R 666(とか) hoge のように指定すれば、hoge ディレクトリ配下すべてのパーミッションが666になります。

参考URL:
http://www.google.co.jp/search?q=The+value+for+the+useBean+class+attribute+Cart+is+invalid.&ie=utf-8&oe=utf-8&aq=t&rls=o
heartin_pe
質問者

補足

早い回答ありがとうございます! 開発元がどこなのか、ちょっと把握できませんね~。 問い合わせるならお客様にお願いすることになりますが、問い合わせて頂くようお願いしたことはありますが「パーミッションを変更すれば・・・」の返事のみとなりましたので、現在までその線で動いてました。 >Tomcatがそのクラスを読み込めていない > ⇒配置すべきファイルに不足はありませんか? すいません、クラスとは何でしょうか? 元々Tomcatはすでに用意されていましたのでTomcatのデータを置いている場所に問題はないと思います。 ただ、今回のエラーの前にショッピングカートで[購入]を押すとHTTP400エラーが表示されたことがあり、サーブレットを実行するようになっていない原因によりweb.xml内のservletとservlet-mappingのコメントアウトを外した経緯があります。 web.xml内で必要なものがまだコメントアウトされている可能性があるってことでしょうか??? >・参照クラスがデフォルトパッケージに配置されていると使えない > ⇒これはもうプログラム側の問題です。 んー・・・これもすいません、よく分かりません。 参照クラスってどんなファイルなのでしょう? デフォルトパッケージってどこにあるのでしょう? Casher.jspの中が <jsp:useBean id="product" scope="session" class="Cart" /> となっていますが、クラスってclass="Cart"のことでしょうか? (参照クラスって"Cart"?) >その他、どうしてもよくわからなくなったときは、 >一度すべて消して、もう一度手順見ながら再インストールする、とかも良いかもしれません。 これはちょっと怖いですね。最終手段としておいておきます。 パーミッション変更方法として「-R」を提案してくださいましたが、フォルダ内のファイルの元のパーミッションが同じではないので、一緒くたにパーミッション変更してしまうと、元に戻す時に元がどうであったか分からなくなるので、あえて1つ1つのファイルを変えています。 1つのファイルを変えてカートの動きチェックして元に戻し、次のファイルを1つパーミッション変えてカートの動きチェックして元に戻し・・・の繰り返しですねぇ。 変更を試みているパーミッションは「755」「700」「777」を主にしているのですけど、パーミッション変更してみるなら「666」が良いのでしょうか?

関連するQ&A