TomcatがBeanをコンパイル失敗する原因と解決方法

このQ&Aのポイント
  • - Windows2000で、Tomcat3.2.1 + ApacheをWebサーバーとしてJSP + Bean のWebアプリケーションを開発しています。
  • - Beanを再コンパイルした後は正常に動作しますが、夜Windowsをシャットダウンして、翌朝立ち上げると、エラーが出ます。
  • - 原因として、ソースファイルのエンコーディングの問題が考えられます。エンコーディングを指定するか、native2asciiユーティリティを使用してソースコードをASCII 文字だけにしてください。
回答を見る
  • ベストアンサー

毎朝TomcatがBeanをコンパイル失敗

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ファイルを再コンパイルせずに実行すると上記のようなエラー。 書籍やサイトを検索してみましたが、このような事態を解釈する上で参考になるようなものを見つけることができませんでした。どのような原因が考えられますでしょうか?

  • Java
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • mkim
  • ベストアンサー率67% (25/37)
回答No.1

Tomcat3.2.1とかって、JSPでファイルをincludeする時に、charsetが指定できませんでしたよね? そのへんと、関係ありそうでしたら、Tomcat3.2.3にすると良いかもしれません。 Tomcat3.2.3では、解決されているそうなので。 その辺の事が、月刊JavaWorld 11月号(サーブレット・JSPトラブルシューティング特集)に出てるみたいです。 サーブレット・コンテナについてのトラブルも載っているそうですので。 (私は、まだ目を通してないので全然関係なかったら、ごめんね。) ではでは。

krmtsgrpt
質問者

お礼

ご回答ありがとうございます。早速、今夜本屋さんに行ってみようと思います。 私のほうでも、あれから更にWEB検索し、文字コードについては、ToRAさんのページ http://www.mars.dti.ne.jp/~torao/program/servlet/tomcat.html で、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を使用するようにしていたときには、このようなエラーは出ていなかったような気がします。

krmtsgrpt
質問者

補足

JGuruで、CLASSPATHにservlet.jarとj2ee.jarの両方を含めているとトラブルの原因になることがあるというような記述を見つけました(j2ee.jarの中にservlet.jarが含まれているため)。 先週末にj2ee.jarをCLASSPATHから外してみたら、今朝はエラーもなく調子がいいようです。 せっかくですので、この機会にJavaWorld付属のTomcat3.2.3を入れようと思います。mkimさん、どうもありがとうございました。

関連するQ&A

  • Tomcat内のJSPファイルを削除したい

    事情がありにTomcat内のフォルダを 見せなければならなくなりました。 他人にTomcat内のファルダにあるサーブレット(+Beans等のクラスファイル)と JSPのソースを見られない様にしたいです。 またその上で実行も可能にしたいのですがどうすればいいでしょうか? サーブレット等は Tomcat 7.0/webapps/MyWebSite/WEB-INF/classes以下の クラスファイル(.class)だけを残してJavaファイル(.java)を削除 するか、Eclipseでソースをエクスポートさせない様にすると Javaのソースは見れなくなると思いますが、 JSPの場合だと Tomcat 7.0/webapps/MyWebSite/以下の JSPファイル(.jsp)を削除して、 Tomcat 7.0/work/ 以下にあるJSPをサーブレットに変換後 コンパイルされたファイル(.class)を残すだけではダメな様です。 他に方法はあるでしょうか? サーブレットのソースを見られないだけでも良しと考えるべきでしょうか?

    • ベストアンサー
    • Java
  • TOMCATインストール後、コンパイルエラーが起こってしまいます。

    WinXP(home)にTOMCATをインストールしサーブレット/JSPを勉強したいと思っているのでが、うまくいきません。 ○症状 TOMCATインストール語、「Hello Servlet」の文字を表示させるプログラムがコンパイルエラーになってしまいます。 プログラムコードに問題は無いとはずだと思い、TOMCAT以外に、「JRun」というソフトを入れて同じプログラムをコンパイルすると無事完了し、「Hello Servlet」が表示できました。 ○質問 TOMCATのインストールがうまくいっていないのでしょうか? ○TOMCATの動作確認状況 startup.batファイル実行すると、2つ目のプロンプトウィンドウは下記の様になります。 ========================================= サービス Tomcat-Standalone を起動します Apache Tomcat/4.0 サービス Tomcat-Apache を起動します Apache Tomcat/4.0 ========================================== また、 「http://localhost:8080/」は無事に表示されます。 ○コンパイルエラー内容 C:\java_sample>javac -classpath %TOMCAT_HOME%\bin\servlet.jar HelloServlet.java HelloServlet.java:3: パッケージ javax.servlet は存在しません。 import javax.servlet.*; ^ HelloServlet.java:4: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.*; ^ HelloServlet.java:6: シンボルを解釈処理できません。 シンボル: クラス HttpServlet 以下省略 ご教授よろしくお願いします。

    • ベストアンサー
    • Java
  • Beanの設定

    Beanの置く位置を教えて下さい。 詳細は HHML  ↓ サーブレット ⇔検索Bean ⇔ DB  ↓ JSP eclipseを使っています。 どこにパッケージを作り、Beanのjavaファイルを 置いていいか分かりません。 WEB-INFで新規パッケージで作成 /selecy/WEB-INF/Bean/Bean.java ではエラーになります。

  • Tomcatで、存在するファイルがStatusCode:404になる

    Tomcatで、次のファイルを配置し、 tomcat-3.3.1\webapp\app\web\testLoginMenu.jsp インターネットエクスプローラから http://localhost/app/web/testLoginMenu.jsp を表示しようとするとTomcatコンソールに次のメッセージが表示され、ブラウザではエラーとなります。 "Class not found: TOMCAT/JSP/web/testLoginMenu.jsp" "Status code:404 request:R( /app + /web/testLoginMenu.jsp + null) msg:null" ファイル名を testLoginMenu.jsp から index.jsp に変えると表示されるようになります。 環境は次の通りです。 Windows2000 Tomcat3.3.1 JAVA JDK1.3.1 よろしくお願いします。

  • JSPファイルがコンパイルできない!

    雑誌に付いていたtomcat3.2.3用のServlet/JSPを tomcat4.1.10で動かそうとしたら、JSPファイルが コンパイルできないというエラーが出ました。 エラーの内容は、 ------------------------ org.apache.jasper.JasperException: JSPのクラスをコンパイルできません JSPファイル: /*****.jsp の中の行: 1でエラーが発生しました 生成されたサーブレットのエラーです: [javac] Compiling 1 source file C:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\*****\*****_jsp.java:43: シンボルを解決できません。 シンボル: クラス ○○ 場所 : org.apache.jsp.*****_jsp の クラス ***** ***** = (*****)request.getAttribute("*****"); ^ -------------------------- といった感じです。 tomcat3.2.3ではちゃんと動いたのですが、 4.1.10では他に何かしなければいけないのでしょうか。 よろしくお願いします。

  • tomcatについて

    tomcatを用いてJSPが出来るようにしたいのですが、 HTTPステータス 404 - /myApp/mathexp.jsp The requested resource (/myApp/mathexp.jsp) is not available. というエラーが出てしまい、全くの手詰まり状態です。 お約束のHelloWorldさえ表示できません。 servletのみは動くのですが・・・ web.xmlは <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>myApp</display-name> <description> deply examples </description> </web-app> です。 OS:windowsXP tomcat:Tomcat 6.0.14 環境変数 JAVA_HOME:C:\Program Files\Java\jdk1.5.0_13 JRE_HOME:C:\Program Files\Java\jdk1.5.0_13\jre CATALINA_HOME:C:\tomcat\tomcat-6 ファイル C |tomcat ||tomcat-6 |||webapps ||||myApp ....HelloWorld.jsp |||||WEB-INF .....web.xml 原因はおそらくmyAppフォルダ内にあるHelloWorldが.jspで保存してもなぜかテキストファイルとなってしまう事にあるとおもうのですが、なぜこのようになるのかが分かりません。 詳しい方、ご回答よろしくお願いいたします。

    • ベストアンサー
    • Java
  • jspでbeanを使いたいのですが...

    お世話になります。 JSPコード内のjavaプログラムをBeanとして読み込むようにし、インスタンスを作ってエラーにならないか試したところ、クラスが認識されないエラーが起きてしまいました。 他の記述やテキスト、サイト様を参考に手直しをしてみたもののうまく行かず、何だかわからなくなってしまいました... ご教授お願いいたします。 OS:WindowsVista サーブレット:Tomcat 参考テキスト:java+MySQL+Tomcatで始めるWebアプリケーション ファイルの階層 Desktop─test─jamyto┬aura─aurabottle.jsp            └WEB-INF─classes─auras┬IdMake.java                         └IdMake.class aurabottle.jsp側 <%@ page contentType="text/html; charset=Windows-31J"%> <%@ page import="java.sql.*"%> <%@ page import="java.util.*"%> <%@ page import="auras.IdMake"%> <%auras.IdMake idmake = new auras.IdMake();%>    以下JSPコード IdMake.java側 package auras; import java.sql.*; public class IdMake { StringBuffer sb = new StringBuffer(); public int barthDay (String strYear, String strMonth, String strDay){ 以下Javaコード エラー文面 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: JSP FileName:null Java FileName:/C:/Program Files/Apache Software Foundation/Tomcat 5.5/work/Catalina/localhost/aura//org/apache/jsp\aurabottle_jsp.java An error occurred at line: 6 in the generated java file Only a type can be imported. auras.IdMake resolves to a package JSP FileName:/aurabottle.jsp Java FileName:/C:/Program Files/Apache Software Foundation/Tomcat 5.5/work/Catalina/localhost/aura//org/apache/jsp\aurabottle_jsp.java JSPファイル: /aurabottle.jsp の中の7行目でエラーが発生しました auras.IdMake cannot be resolved to a type

    • ベストアンサー
    • Java
  • JSPでコンパイルキャッシュのリセット

    tomcat3.1とJServで、JSPでHPを作っている者です。 JSPファイルを更新すると、次にブラウザに表示するときにコンパイルされますが、たとえばあるサーバに多くのJSPファイルを運んでいって、すべてかならずコンパイルしてほしい時などに tomcat/work/*.class をすべて消去する、という方法で正しいかどうかがわかりません。 どなたか実際にこの方法を採っている方などおりましたらアドバイスをいただければと思います。

    • ベストアンサー
    • Java
  • 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

    • ベストアンサー
    • Java
  • JSPファイルを削除したいです。

    事情がありにTomcat内のフォルダを 見せなければならなくなりました。 他人にTomcat内のファルダにあるサーブレット(+Beans等のクラスファイル)と JSPのソースを見られない様にしたいです。 またその上で実行も可能にしたいのですがどうすればいいでしょうか? サーブレット等は Tomcat 7.0/webapps/MyWebSite/WEB-INF/classes以下の クラスファイル(.class)だけを残してJavaファイル(.java)を削除 するか、Eclipseでソースをエクスポートさせない様にすると Javaのソースは見れなくなると思いますが、 JSPの場合だと Tomcat 7.0/webapps/MyWebSite/以下の JSPファイル(.jsp)を削除して、 Tomcat 7.0/work/ 以下にあるJSPをサーブレットに変換後 コンパイルされたファイル(.class)を残すだけではダメな様です。 他に方法はあるでしょうか? サーブレットのソースを見られないだけでも良しと考えるべきでしょうか? http://ksrd.yahoo.co.jp/PAGE=DT_ACTIVE/OUTLINK=1/QID=12100680882/AID=236975321/SIG=12dep0io1/EXP=1359004059/*-http%3A//tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html#Web_Application_Compilation 上記URLに何かそれらしき事が書いてあるのですがよく分かりません。 どうすればいいでしょうか? アクセスを制限する以外の方法でお願いします。

    • ベストアンサー
    • Java