アプリ版:「スタンプのみでお礼する」機能のリリースについて

javaでuseBeanエラーの解決方法

レンタールサーバーを経営しており、javaを使ってショッピングカートを動かしているお客様からエラー解除してほしいという依頼を受けました。
該当するサイトのショッピングページで「購入」ボタンを押すと
Error:org.apache.jasper.JasperException: /(ユーザー名)/Casher.jsp(2,0) The value for the useBean class attribute Cart is invalid.
と表示されます。
お客様曰く、java側に問題はないので、管理側でどこかのパーミッションを書き込み可能なものへ変更すればいい、ということでしたが、javaの知識は一切ないためホームディレクトリの上から順に、片っ端にパーミッション変更をして試していますが、ファイル/フォルダの量が膨大すぎて解決に時間がかかりすぎてしまいます。
お客様もどのファイル/フォルダのパーミッションを変えればいいのか?パーミッションをどんな内容に変えたらいいのか知らないそうです。

インターネット上でしらみつぶしに調べましたが解決方法は一切見つけられませんでした。
(同じ質問内容を別の掲示板で質問している人を見つけましたが、誰も回答してませんでした)

いったいどのファイルのパーミッションを変えればいいのでしょうか?
javaの知識が一切ないため、おおよその見当すらつきません。

「もしかしたら」というような些細な情報でも構いませんので教えてください。
お願いします!

A 回答 (4件)

一番確実で早そうな解決方法は、たぶんそのショッピングカートの開発元に問い合わせ、ですね。

。。

エラー内容を見る限りはパーミッションが原因の可能性は低そうな気がします。(遠因である可能性はあるかもですが
軽くぐぐってみましたが、考えられるのはこんなところでしょうか。

-----------------------------------------------
・Tomcatがそのクラスを読み込めていない
 ⇒配置すべきファイルに不足はありませんか?

・参照クラスがデフォルトパッケージに配置されていると使えない
 ⇒これはもうプログラム側の問題です。
-----------------------------------------------

その他、どうしてもよくわからなくなったときは、
一度すべて消して、もう一度手順見ながら再インストールする、とかも良いかもしれません。
(お客様のコンテンツに勝手にそんなことしていいのか、って問題はおいといて)


なお、大量ファイルのパーミッションを変更するのであれば、shell上で、
chmod -R 666(とか) hoge
のように指定すれば、hoge ディレクトリ配下すべてのパーミッションが666になります。

参考URL:http://www.google.co.jp/search?q=The+value+for+t …

この回答への補足

早い回答ありがとうございます!
開発元がどこなのか、ちょっと把握できませんね~。
問い合わせるならお客様にお願いすることになりますが、問い合わせて頂くようお願いしたことはありますが「パーミッションを変更すれば・・・」の返事のみとなりましたので、現在までその線で動いてました。

>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」が良いのでしょうか?

補足日時:2010/06/25 22:37
    • good
    • 0

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" />
こうなるはずよ。

この回答への補足

早い回答ありがとうございます!
以前同じ現象になった時、サーバー管理側(私達)でパーミッションを変更したら解決したことがあったためお客様は「こちらに負は一切ない!」と豪語されています。
でも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内の記述はどうしたら良いのでしょう?
(お客様からは、ファイル内を変更する許可はいただいています)

補足日時:2010/06/25 22:21
    • good
    • 0

>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があったりしないかしら?

この回答への補足

askaaskaさん、何度も回答してくださってありがとうございます。

>そのbeanより下にCart.classがあったりしないかしら?
ありました。

・bean(フォルダ)の下に
「Cart.class」「Cart.java」がありました。

ではこの場合、Casher.jspの中の記述は
<jsp:useBean id="product" scope="session" class="Cart" />
のままで正しいということでしょうか?
記述が間違っているなら、どのように記述すると正しく動くか分かりますか?

補足日時:2010/06/28 13:41
    • good
    • 0

・bean(フォルダ)の下に


「Cart.class」「Cart.java」がありました。

Cart.java

package bean;
の記述があれば

<jsp:useBean id="product" scope="session" class="bean.Cart" />
こうね。
    • good
    • 0
この回答へのお礼

askaaska様、ありがとうございます!!!!
解決しました!!!!
もう本当にありがとうございます!解決できてすごく嬉しいです。

classの値に「bean」を付けるか付けないかで、こんなにも違うのですね!
今回のことはすごく勉強になりました!

的確なアドバイス本当にありがとうございます!
すごく感謝します!!!

お礼日時:2010/06/29 18:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!