Windows2000で、Tomcat3.2.1 + ApacheをWebサーバーとしてJSP + Bean のWebアプリケーションを開発しています。
Beanを再コンパイルした後は正常に動作しますが、夜Windowsをシャットダウンして、翌朝立ち上げると、下記のようなエラーが出ます。
-----------------------------------------
JasperException: R(/XXX + /yyy.jsp + null) Unable to compile class for JSP %TOMCAT_HOME%\XXX\WEB-INF\classes\zzz\A.java:1: このソースファイルのエンコーディングがプラットフォームのものと異なっている可能性があります。 -encodingオプションを指定してファイルのエンコーディングを指定するか、あるいはnative2asciiユーティリティを使用してソースコードをASCII 文字だけにしてください。
------------------------------
<試したこと>
●ソースファイルを、パッケージ化せずに、全てnative2asciiで変換してからコンパイル
●ソースファイルをパッケージ化して、native2ascii変換せずにコンパイル
●ソースファイルをパッケージ化して、native2ascii変換してからコンパイル

<結果>いずれも、その日のうちは Windowsを何度 <シャットダウン → 起動> しても、問題なく動作しましたが、翌朝になると、Windowsを起動した後Javaファイルを再コンパイルせずに実行すると上記のようなエラー。

書籍やサイトを検索してみましたが、このような事態を解釈する上で参考になるようなものを見つけることができませんでした。どのような原因が考えられますでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

Tomcat3.2.1とかって、JSPでファイルをincludeする時に、charsetが指定できませんでしたよね?


そのへんと、関係ありそうでしたら、Tomcat3.2.3にすると良いかもしれません。
Tomcat3.2.3では、解決されているそうなので。

その辺の事が、月刊JavaWorld 11月号(サーブレット・JSPトラブルシューティング特集)に出てるみたいです。
サーブレット・コンテナについてのトラブルも載っているそうですので。
(私は、まだ目を通してないので全然関係なかったら、ごめんね。)

ではでは。

この回答への補足

JGuruで、CLASSPATHにservlet.jarとj2ee.jarの両方を含めているとトラブルの原因になることがあるというような記述を見つけました(j2ee.jarの中にservlet.jarが含まれているため)。
先週末にj2ee.jarをCLASSPATHから外してみたら、今朝はエラーもなく調子がいいようです。

せっかくですので、この機会にJavaWorld付属のTomcat3.2.3を入れようと思います。mkimさん、どうもありがとうございました。

補足日時:2001/10/22 09:12
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。早速、今夜本屋さんに行ってみようと思います。

私のほうでも、あれから更にWEB検索し、文字コードについては、ToRAさんのページ
http://www.mars.dti.ne.jp/~torao/program/servlet …
で、tomcat.confに下記のように設定するらしいことを発見しました。

wrapper.bin.parameters=-Dfile.encoding=Shift_JIS -Duser.region=ja -Duser.lang=JP -Duser.timezone=JST

が、Apacheがこの行を理解できないというエラーが出てしまいました…。

ところで、LinuxマシンのPostgreSQLをDBサーバーとして使用しているのですが、それもこの問題に関係しているのでしょうか…?
以前、同じアプリケーションを、tomcatと同一のWindowsにいれたOracleを使用するようにしていたときには、このようなエラーは出ていなかったような気がします。

お礼日時:2001/10/12 13:02

このQ&Aに関連する人気のQ&A

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

このQ&Aと関連する良く見られている質問

QTOMCATで\webapps\ROOTフォルダで自作のindex.jspを表示させるには。

いままで、TOMCATで\webapps\ROOT内に、
index.htmlをおき、トップページにしていましたが、
これを、index.jspに変えようと思いました。
しかし、index.jspは、もともと、TOMCAT宣伝用の
index.jspがあるので、これの名前を変えたのですが、
どうしても、index.jspでこの宣伝用のページ
が表示されてしまいます。
いままで使っていたので、なんとか現在の
ドキュメントルートでindex.jspを使いたいのですが、
どうしたらいいでしょうか。
(WEB-INF内のweb.xmlのservlet-mappingの設定が、
関係ありそうですが)。
お願いします。

Aベストアンサー

ROOT内のWEB-INF内にあるweb.xmlをエディタなどで開いてください。そして以下の部分を探してください。

<servlet-mapping>
<servlet-name>org.apache.jsp.index_jsp</servlet-name>
<url-pattern>index.jsp</url-pattern>
</servlet-mapping>

この部分をコメントアウトします。つまり、手前に<!--を、後に-->をつけて、

<!--
<servlet-mapping>
<servlet-name>org.apache.jsp.index_jsp</servlet-name>
<url-pattern>index.jsp</url-pattern>
</servlet-mapping>
-->

こうするわけですね。
これで、http://localhost:8080/でwebapps/ROOT/index.jspが表示されると思います。

QBean→JSPでの文字化け

こんにちは。

質問したいことがあります。
JSPで定義した全角文字列はそのままブラウザに表示されるのですが、Bean内で定義した全角文字が文字化けをしてしまいます。
文字化けは、JSPファイルからBeanのメソッドを使ってパラメータを取得する際に
発生します。

----------------------例----------------------------------------
<jsp:useBean id="tBean" scope="session" class="test.testBean" />

<p>運勢は <em><%= tBean.getUnsei() %></em> です!</p>
------------------------------------------------------------------
※getUnsei()はBean内で定義された全角文字を取得するメソッドで、このメソッドで取得した文字列が文字化け(?が多数出力される)します。ちなみに「運勢は」と「です!」という文字列は、そのまま文字化けせずに出力されます。

どう対処してよいか全く分かりません。
もし何か分かることがありましたらご教授御願い致します。

こんにちは。

質問したいことがあります。
JSPで定義した全角文字列はそのままブラウザに表示されるのですが、Bean内で定義した全角文字が文字化けをしてしまいます。
文字化けは、JSPファイルからBeanのメソッドを使ってパラメータを取得する際に
発生します。

----------------------例----------------------------------------
<jsp:useBean id="tBean" scope="session" class="test.testBean" />

<p>運勢は <em><%= tBean.getUnsei() %></em> です!</p>
------------------------------------...続きを読む

Aベストアンサー

何分情報が少なく的を得ていないかもしれませんが、
tBean.getUnsei()
で表示される文字列は
"??????????????"
でしょうか?
だとしたらエンコーディングを2回やっている可能性があります。JSPから受け取った文字列のエンコーディング処理を再度確認してみてください。

Qjsp + servlet + Beans

なぜ、jsp + servlet + Beansというような使い方をするのでしょうか?

jsp + Beansでは、表示用にjsp、複雑な処理はBeansという感じにすることの意味はわかります。
同様に、jsp + servletもわかります。

servletで行う処理と、Beansで行う処理はどこで線を引けば良いのでしょうか?

よろしくお願いします。

Aベストアンサー

>Beansとクラスっていうのは、別ですよね?
Beanとクラスは一緒です。

>クラスでやる場合はどのような不都合があるのでしょうか?
JavaBeansとは基本的には値の受け渡しで使用します。
主にsetter(set~)メソッドとgetter(get~)メソッドで成り立ちます。
またその中にビジネスロジックを搭載しsetした値から何かの数値を計算するとかしてそれをgetで取得するって感じです。

一応参考までにJavaBeansクラスはこんな感じです。

public class SampleBeans{
private String name;//名前
 private int number://番号

public String getName(){
return this.name;
}

public int getNumber(){
return this.number;
}

public void setName(String name){
this.name = name;
}

public void setNumber(int number){
this.number = number;
}

}

>Beansとクラスっていうのは、別ですよね?
Beanとクラスは一緒です。

>クラスでやる場合はどのような不都合があるのでしょうか?
JavaBeansとは基本的には値の受け渡しで使用します。
主にsetter(set~)メソッドとgetter(get~)メソッドで成り立ちます。
またその中にビジネスロジックを搭載しsetした値から何かの数値を計算するとかしてそれをgetで取得するって感じです。

一応参考までにJavaBeansクラスはこんな感じです。

public class SampleBeans{
private String name;//名前
 private...続きを読む

QJSPでBeanにセット

お世話になります。

JSPでフォームの各値に入るものをBeanにつめたいと思います。
strutsなどは特にコーディングしなくてもBeanに勝手にはいっていくとおもうのですが、
あれはいったいどうやって実現しているのでしょうか?

リフレクションとかをつかって変数名からメソッド名をひっぱりだしてそれでsetPropertyとかをよんでいるのでしょうか?

Aベストアンサー

その通りです。
実際には、jakarta commons プロジェクト内の
サブプロジェクト「BeanUtils」が、リフレクションを
扱いやすくするためのメソッド群を提供しており、
Strutsはそちらを利用しています。

QJAVA BEANとJSPページ

いつもお世話になっております。

JAVA BEAN とJSPの質問なんですが、
JSPページでHTMLフォームから名前と住所を入力して、
BEANのページにその名前と住所をパスする、
というやり方がよく分かりません。

どなたかご教授頂けると大変うれしいです。
よろしくお願い致します。

Aベストアンサー

一応、該当する過去ログを貼っておきます。ただその前に、以下の参考URL:の方も拝見しておいてほしいなあ。(技術者さんも結構、いろいろと忙しいので。)

http://oshiete1.goo.ne.jp/kotaeru.php3?q=1544044

参考URL:http://oshiete.goo.ne.jp/ask/howto/search.html


人気Q&Aランキング

おすすめ情報