こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Windowsで作成したJSPがLinuxサーバーでコンパイルエラー

Windowsのeclipseでjspやservletを作っているのですが、やっとエラーがなくなったので、warファイルを作り、Linuxサーバーにコピーし、展開して動かしてみようとしたところ、jspがコンパイルエラーになってしまいました。

原因を探っていったところ、特殊文字の部分(\"→二重引用符自身の表示)の\が、jspからservletへの自動変換のときに抜けていることがわかりました。(Linuxでは¥はバックスラッシュになっていますが)

Windowsで開発して、Linuxで実際に使うというのは、できないものなのでしょうか?


(問題の部分)
strUrl = "<a href=\"/Diary/DiaryUpdate.jsp?yy=" + strYY + "&mm=" + strMM + "&dd=" + strDay + "\">";
の \" が " になってしまい、
strUrl = "<a href="/Diary/DiaryUpdate.jsp?yy=" + strYY + "&mm=" + strMM + "&dd=" + strDay + "">";
となる(当然、コンパイルエラーになる)


(Windows機)
Windows2000
j2sdk-1.4.1
tomcat-4.1.31
eclipse-2.1
 テキストファイルエンコードは、MS932
 tomcat\conf\web.xmlのjavaEncodingは、Windows-31J
 jspの@pageは、 
  contentType="text/html;charset=Shift_jis"  
  pageEncoding="Shift_jis" を指定

(Linux機)
FedoreCore2(kernel-2.6.9-1)
j2sdk-1.4.2
tomcat-4.1.27

投稿日時 - 2005-01-27 22:38:17

QNo.1189116

困ってます

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

根本的な原因はわからない(TomcatのJSPをコンパイルする際のエンコードは別で設定しているのかもしれません)ので代替案を二つほど。

HTMLでは属性の文字を囲むためにダブルクォーテーション(")だけでなくシングルクォーテーション(')も使用できます。なので、ご質問の文字列は、
strUrl = "<a href='/Diary/DiaryUpdate.jsp?yy=" + strYY + "&mm=" + strMM + "&dd=" + strDay + "'>";
という感じで書き換えることができます。

もうひとつの解決策は、できるだけスクリプトレットを使わないということです。たぶん、URLを動的に生成して表示したいという要求のように見受けられますがいかがでしょうか。そのときは以下のように記述できます。
<a href="/Diary/DiaryUpdate.jsp?yy=<%= strYY %>&mm=<%= strMM %>&dd=<%= strDD %>">

投稿日時 - 2005-01-29 11:14:00

お礼

hogefugaさん、ありがとうございます。
シングルクォーテーションでやってみたところ、うまくいきました。

jspやservletについては、Windowsでうまくいっても、Linuxでは動かないことがあり、苦労しそうです。
(今も、Linuxだけデータを呼び出せなくて、思案中です)
サーバーがWindowsかLinuxかで、開発機も合わせた方がいいみたいですね。

また、行き詰まってしまったら、質問すると思いますので、その時はよろしくお願いします。

投稿日時 - 2005-01-29 12:19:21

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

解決しているようですが、ちょっとアドバイスを。

LinuxでTomcatを起動するシェルで、プロセス内のデフォルトの文字コードをMS932やWindows_31Jに設定してしまえばあまり意識せずに使用できると思います。ログなども指定したコードになりますが…

あと、文字コード名はShift_jisではなくShift_JIS(JISが大文字)です。大小を区別するソフトウェアも多いですから、書き分けましょう。ひょっとしたら大小が区別された結果、不正な文字コードとして指定が無効になっているかもしれません。

投稿日時 - 2005-01-29 16:25:51

お礼

deadlockさん、ありがとうございます。

「LinuxでTomcatを起動するシェルで、プロセス内のデフォルトの文字コードを・・・」というのは、自分のサーバーではないので、ちょっと無理のようです。機会があったら、試してみたいと思います。

それから、「Shift_jis」については、別途「EUC-JP」にすべてかえてやってみても、結果が同じだったので、たぶん、これではないと思われます。

javaって、難しいですね。前途多難ですが、がんばってみます。

投稿日時 - 2005-01-29 19:37:58

あなたにオススメの質問