クラスファイルの配置について

このQ&Aのポイント
  • クラスファイルの配置に関する疑問について説明します。
  • Tomcatでのクラスファイル配置のルールと、エラーが発生した場合の対処法について解説します。
  • サーバーの設定やクラスファイルの配置に関して、具体的な制約やベストプラクティスを紹介します。
回答を見る
  • ベストアンサー

クラスファイルの配置について

初めまして。 質問したいことがあります。 私の環境は OS:RedHatLinux7.2 JDK:1.3.0_02 Tomcat:ver3.2.4 です。 servletの動作について (1)tomcat/WEB-INF/test/classes/hello.class ("HelloWorld"という文字列を表示するクラス)で  アドレス→http://localhost:8080/test/servlet/helloと入力すると正常に動 作しました。 次に (2)tomcat/WEB-INF/test/classes/sample/hello.class ("HelloWorld"という文字列を表示するクラス)で  アドレス→http://localhost:8080/test/servlet/sample/helloと入力すると Error 500 Internal Servlet Errorというエラーが発生しました。 server.xmlには <Context path="/test"    docBase="webapps/test"    crossContext="false"    debug="0"    reloadable="true" > </Context> を追加しているだけなのですが、Tomcatではクラスファイルは絶対にclassesディレクトリの直下に配置しなければならないのでしょうか? (2)のclasses-sample-hello.classというように、classesディレクトリとクラスファイルの間にディレクトリが存在すると駄目なのでしょうか? もし何かわかることがありましたらご教授御願い致します。

  • Java
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • aton
  • ベストアンサー率47% (160/334)
回答No.2

#1のatonです。 >> http://localhost:8080/test/servlet/sample/hello >> か, >> http://localhost:8080/test/servlet/sample.hello > 上記のように試してみましたが、Error: 500 Internal Servlet Error が発生しうまく動作しませんでした。 前のメイルにも書きましたが, 「クラス hello を package sample; でコンパイル」 したでしょうか? ただ単に現在のクラスファイルをsampleディレクトリの下に持っていくだけではダメです。 パッケージ宣言をしてコンパイルし直してもダメだったのであれば,Tomcatがパッケージ内のクラスにアクセスする方法を調べてみてください。 > classesディレクトリの直下にどんどんクラスファイルを作成するとクラスの機能的にも区別がつきにくくてディレクトリを作成してクラスファイルを分けて管理しようと思ったのですが、駄目みたいですね。 そういう目的であれば,WEB-INF下でディレクトリを分けるのが普通ではないでしょうか。 testなんていうディレクトリをいつまでも使うわけでもないと思いますので。

takekun22
質問者

お礼

回答どうもありがとうございます。 クラス hello を package sample; でコンパイルして http://localhost:8080/test/servlet/sample.hello にアクセスすると動作しました。 今回はどうもありがとうございました。 また何かありましたら宜しく御願い致します。

その他の回答 (1)

  • aton
  • ベストアンサー率47% (160/334)
回答No.1

Tomcatではクラスファイルは絶対にclassesディレクトリの直下に配置しなければならないのでしょうか? 基本的にそうです。 > (2)のclasses-sample-hello.classというように、classesディレクトリとクラスファイルの間にディレクトリが存在すると駄目なのでしょうか? こうすると,「sample というパッケージに hello というクラスが存在する」と解釈されることになると思います。 クラス hello が package sample; でコンパイルされていれば, http://localhost:8080/test/servlet/sample/hello か, http://localhost:8080/test/servlet/sample.hello でアクセスできるかもしれません。

takekun22
質問者

お礼

回答どうもありがとうございました。 >Tomcatではクラスファイルは絶対にclassesディレクトリの直下に配置しなければ>ならないのでしょうか? >基本的にそうです。 そうですか。classesディレクトリの直下にどんどんクラスファイルを作成するとクラスの機能的にも区別がつきにくくてディレクトリを作成してクラスファイルを分けて管理しようと思ったのですが、駄目みたいですね。 >http://localhost:8080/test/servlet/sample/hello >か, >http://localhost:8080/test/servlet/sample.hello 上記のように試してみましたが、Error: 500 Internal Servlet Error が発生しうまく動作しませんでした。 今回はどうもありがとうございました。 また何かありましたら宜しく御願い致します。

関連するQ&A

  • servlet (resin) について

    tomcatとresinって、そんなに違うのですか? resinでプログラムを動かしたいのですが、動いてくれません… tomcatの場合、webappsの下に自分の好きなディレクトリを作れば(test)その中のWEB-INF/classes にクラスファイル(TEST.class)を置けば、  http://localhost:8080/test/servlet/TEST で動きますが、resinも同じようにしようと思って、test/WEB-INF/classes/の下にTEST.java を置いて(コンパイルしてくれると聞いたのでJAVAファイルを置きました) http://localhost:8080/test/servlet/TEST を見ても、/test/servlet/TEST was not found on this server. と怒られました… どうすればいいのでしょう??

  • 困ってます

    自分は今TomcatでサーブレットとJSPの勉強をしています。 サーブレット(hello.class)はTomcat-conf-server.xmlに <Context path="/test"    docBase="webapps/test" crossContext="false" debug="0" reloadable="true" > </Context> を追加したことにより http://localhost:8080/test/servlet/hello で動作は確認しました("Helloworld"の表示のみ) JSP(hello.jsp)は Error: 500 Internal Servlet Error:が表示されて実行できません。 ちなみにhello.jspはtestディレクトリの直下に保存しています。 ・hello.jspのスクリプト <%@page contentType="text/html;" %> <html> <head> <title>JSPTEST</title> </head> <body> <% out.println("HELLO WORLD!"); %> </body> </html> ※ちなみにcontentType="text/html;charset=Shift_JIS"とすると  ページが見つからないというエラーになりました。 ・JSPファイルを表示するアドレス http://localhost:8080/test/hello.jsp 開発環境は RedHatLinux7.2 Java2 SDK 1.3.0 Jakarata Tomcat 3.2.4 で、 環境変数は JAVA_HOME=/usr/java/jdk1.3.0_02 TOMCAT_HOME=/usr/src/jakarta/tomcat PATH=$PATH:$JAVA_HOME/bin:$TOMCAT_HOME/lib/servlet.jar CLASSPATH=. です 何か分かる事がありましたらご教授御願い致します。

    • ベストアンサー
    • Java
  • Tomcatのアプリケーションの呼びでエラー404

    Tomcatのアプリケーションの呼びでエラー404となる ブラウザのURLに下記のコマンドを入力し、   http://localhost:8080/hello/index.html を入力すると下記のようにNGとなる。     何故NGとなるか教えてください。 ●コマンド: http://localhost:8080         メッセージ(OK): 一覧表示する。   ●コマンド: http://localhost:8080/hello/index.html ●メッセージ(NG): ype ステータスレポート メッセージ /hello/index.html ● 説明 The requested resource is not available. ●私の環境項目  Os windows 8.1    プログラム: java SE Development kit 8_ Tomcatバ-ジョン:tomcat6.0 ●Hello.xmlディレクトリ: C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\Catalina\localhost\hello.xml ●Hello.xml の内容:   Context path="\hello" docBase="c:\servlet-sample\helloworld"/> ●Indexディレクトリ:  C:\servlet-sampl\helloworld\index.html ●Index.htmの内容: <html> <head><title>HelloWorld</title></head> <body> <br> <img src="./img/p1.png"> <a href="/hello/helloworld">クリックして下さい</a> <br> </body> </html> ●hellWorldディレクトリ:   C:\servlet-sampl\helloworld\WEB-INF\classes ●HellWord.java(class)の内容: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } }

  • Tomcat 4.1での配備方法

    Tomcat 4.0で動作していたアプリがTomcat 4.1だと動作しません。配備方法が変わったんでしょうか? 導入時のサンプル/examplesのサーブレット/JSPは動きますが、そのContext要素の上に記述したContextのdocBaseで指定したパスのWEB-INF/classes/*.classがブラウザから呼び出せないのです(localhost:8080/.../servlet/*)。ちなみに、ドキュメントルート直下にindex.htmlをおいたところ、問題なく参照できました(localhost:8080/.../index.html)。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 作成したサーブレットが表示されません(Tomcat使用)

    はじめまして。 本を見ながらサーブレットを作成、実行したところエラーに 検索するも知識が浅いために理解できず、行き詰ってしまいました。 解決法ご存知の方おられましたら、ご教示いただけますと幸いです。 ************ (略)Tomcat 5.5\webapps\kajsp\WEB-INF\classesの直下にhello_servlet1.classを置き実行したところ、以下のエラーが… ************ HTTPステータス 404 - /kajsp/hello_servlet1 ------------ ステータスレポート /kajsp/hello_servlet1 The requested resource (/kajsp/hello_servlet1) is not available. ------------ Apache Tomcat/5.5.20 ************ web.xmlファイルは以下のとおりです。WEB-INF直下に置きました。 ************ <?xml version="1.0" encoding="Windows-31J"?> <servlet> <servlet-name>hello_servlet1</servlet-name> <servlet-class>hello_servlet1</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello_servlet1</servlet-name> <url-pattern>hello_servlet1</url-pattern> </servlet-mapping> ************ http://localhost:8080/ は見る事ができるのですが、 http://localhost:8080/kajsp/hello_servlet1 ではエラーが出ます。 ************ 環境は Windows XP Home(SP2) JDK JRE:1.5.0_09 Tomcat:5.5 です。 初歩的な質問で申し訳ありませんが、よろしくお願い致します。

    • ベストアンサー
    • Java
  • TomcatでServletの配置場所を変更できますか?

    Tomcatを使ってServletを開発しています。 普通ならば、d:\tomcat\webapps\test\WEB-INF\classes に開発したServletを配置しますが、 事情があって、別のドライブにServletを置きたいのです。 # 例 E:\test\classes\ その場合、どのようにすればよいのでしょうか? どなたか、アドバイスよろしくお願いします。

  • JSPのページが表示されません

    初めまして。 JSPについて質問があります。 現在OSはRedHatLinux7.2で、JDK、Tomcat、Pathの環境変数の設定を行ない、Tomcatを起動させ、Servletの動作("Hello World!"という文字列を表示するのみ)を確認した段階です。Servletの動作の際にTomcatをインストールした直下のconfディレクトリ内のserver.xmlに以下のスクリプトを追加しました。 <Context path="/test"    docBase="webapps/test" crossContext="false" debug="0" reloadable="true" > </Context> Servletに関しては上記の設定とTomcatとPCの再起動で動作を確認できたのですが、JSPの方は[Internal Error: 500 Servlet Error]が出て表示されませんでした。 ちなみにJSPファイルの位置はtestディレクトリ直下のjspディレクトリ内にあります。 ・hello.jspのスクリプト <%@page contentType="text/html;charset=euc-jp" %> <html> <head> <title>JSPTEST</title> </head> <body> <% out.println("HELLO WORLD!"); %> </body> </html> ・JSPファイルを表示するアドレス http://localhost:8080/test/jsp/hello.jsp ここで質問なのですが、JSPに関しても何か設定が必要なのでしょうか? もし何か分かることがありましたら、ご教授御願い致します。

    • ベストアンサー
    • Java
  • TOMCATでのサーブレット環境構築

    初心者です。 Tomcat4.1を使ってサーブレットを動かしたいと思います。 manage/installを使ってWebアプリをインストールするところまではわかりました。 ディレクトリ[c:\java\test\]の配下に [WEB-INF\classes\]というディレクトリを掘って そこにtest.javaとそれをコンパイルしたtest.classがあります。 この状態で http://localhost:8080/manager/install?path=/test&war=file:c:/java/test といれ、testというwebアプリをインストールしました。 listでも確認し、登録されていました。 しかし http://localhost:8080/test/servlet/test とやっても動作しません。 HTTP 404エラーがでます。 (description The requested resource (/test/servlet/test) is not available.) 何が足らないのでしょうか?ご指示をお願いします。 できればわかりやすく解説してあるサイトとかを教えていただければありがたいです。 ちなみにサンプルではいってたexamplesのサーブレットは動作します。 環境はWindows2000です。

    • ベストアンサー
    • Java
  • サーブレットファイル 404

    OS はWindows 8で、JDK 6 、Tomcat 6です。 今朝からサーブレットやjspのリンクを叩いても 「 ~を開くことが出来ません。インターネットサイトのレポートによるとリクエストしたアイテムが見つかりませんでした。(HTTP/1.0 404) 」 としか出なくなりました。昨日までは表示されていたんですが・・・ http://localhost:8080/で左上に猫のロゴがあるページは表示されます。 例としてSample1.javaがありますが、 アドレスはhttp://localhost:8080/自分のフォルダ/servlet/Sample1で このサーブレットファイルはC:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\自分のフォルダ\WEB-INF\classesにあります。  web.xml(C:\Users\自分の名前\Desktop\プログラム\Java基本\java_prc\YJK_ish\WEB-INFの直下に有) を確認しても <servlet> <servlet-name>Sample1</servlet-name> <servlet-class>Sample1</servlet-class> </servlet> <servlet-mapping> <servlet-name>Sample1</servlet-name> <url-pattern>/servlet/Sample1</url-pattern> </servlet-mapping> と入っています。 一応8080でバッティングさせないようにPHPで使う方のApache のサーバーもhttpd -k stopで止めておきました。 考えられる原因は何でしょうか? 他に確かめる方法は無いのでしょうか?

    • ベストアンサー
    • Java
  • サーブレットが実行できない

    似たような質問が何件かあるのですがそちらを読んでも解決できないので、質問させてください。 java servlet初心者なのですが、 http://www.hellohiro.com/servlet.htm のサイトをもとにサーブレット環境を自分のパソコンで作ろうとしています。 とりあえず ・Tomcat5.5.23をダウンロード ・http://localhost:8080でページが表示されることを確認 ・HelloWorldServlet.classを作る。 まで正常にできました。 その後、 [Tomcatのフォルダ]\webapps\examples\WEB-INF\classes にHelloWorldServlet.classをコピーし、 http://localhost:8080/examples/servlet/HelloWorldServlet  を実行したところ 404エラーが発生しました。 もともとwebappsファイル下にexamplesというファイルがなかったのですが、これは正常なのでしょうか? jsp-examplesファイルとservlets-examplesファイルがあったのでその中の \WEB-INF\classes下にHelloWorldServlet.classを入れてみたり、 webapps下に\examples\WEB-INF\classesを作って、その中にそのclassファイルを入れてみたりといろいろやってみたのですが、 まったくエラーは変わりません。 何が悪いのかわからないのですが、 何かアドバイスをいただけないでしょうか? お願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう