サーブレットを呼び出すと以下のようなエラーが発生します。
----------------------------------------------------
type Exception report
message Internal Server Error
description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: ラッパがサーブレットクラス classes/toroku1.class またはそれが依存するクラスを見つけることができません
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:873)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:655)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
----------------------------------------------------
なぜでしょうか?
教えてください。m(__)m
No.4ベストアンサー
- 回答日時:
> パッケージといわれているのは登録されたCONTEXTフォルダ内の
> 子フォルダ以下にclassが存在している事を一般的にパッケージと言うんですよね。
これは全く違います。
# この認識では、今回の問題が解決しても、どんどん躓くと思いますので、
# Javaの基本についてきちんと勉強してからサーブレットの
# 勉強をしたほうがよいと思います。。。
簡単に説明すると、パッケージは、イメージとしてはクラスの
グループのようなものです。
例えば、java.util とか、java.io とか、、、
で、これは、
----
package foo;
public class boo {
:
}
----
のように、「package xxx;」とソース中に指定します。
上記のソースでは、booクラスはfooパッケージのクラスだと
いうことを表します。また、他のJavaのソースで参照するときには、
----
import foo.boo;
----
などと記述します。
また、このパッケージは実際のディレクトリ構成とも関係しており、
上のbooクラスは、「foo\boo.class」というディレクトリ
構成でクラスパスの通っているところに置いておく必要が
あります。
# なお、ごく簡単にしか説明していませんから、きちんと
# 理解するためにも、Javaのパッケージについては勉強
# することをお勧めします。
ということで、
> webapps/Sample/classes/toroku.class
> で存在していて、Sampleフォルダをserver.xmlにCONTESXT登録をしていれば、
> 上記のように設定すればよいという事ですか?
というのは間違いです。
toroku1.javaで「package servlet;」という記述がある場合には、
webapps/Sample/WEB-INF/classes/servlet/toroku1.class
にクラスを置き、No.3で記述したように、
> <servlet-class>
> servlet.toroku1
> </servlet-class>
と記述します。
package指定をしていない場合には、
webapps/Sample/WEB-INF/classes/toroku1.class
にクラスを置き、
<servlet-class>
toroku1
</servlet-class>
と記述します。
なお、JDK1.4(だったと思います)から、package指定のない
Javaのソースはコンパイルエラーにされたと思いますので、
package指定はきちんとしておくべきでしょう
ありがとうございますm(__)m
まだまだ、勉強がたりません・・・・
ところで、CONTEXT登録したフォルダ以下にclassを配置し使用するにはフォルダに対してクラスパスをとおし
package 指定したJavaソースを作成しコンパイルすれば
よいということですよね?
また、その際のpackage指定としては、今回のフォルダ構成からすると
-----
package Sample.classes
-----
とすればよいということですか?
No.5
- 回答日時:
> ところで、CONTEXT登録したフォルダ以下にclass
> を配置し使用するにはフォルダに対してクラスパスをとおし
> package 指定したJavaソースを作成しコンパイルすれば
> よいということですよね?
大体はOKです。
パッケージについては記述した通りですので、
理解を深めるにはもっと詳しい情報を探してみてください。
なお、WEBアプリケーション(Servletとか)については、
少し異なる部分があります。
参考URLでも解説しましたが、WEBアプリケーションでは
ContextRoot\
WEB-INF\
lib\
classes\
というディレクトリ構成を一般にとり、この場合には
クラスパスを通さなくても、実行時にclasses、libディレクトリは見てくれます。
> また、その際のpackage指定としては、
> 今回のフォルダ構成からすると
> -----
> package Sample.classes
> -----
> とすればよいということですか?
というわけで、今の場合には
----
package xxx;
public class toroku1 extends HttpServlet {
}
----
というサーブレットファイルを作ってコンパイルし、
出来たクラスファイルを、
Sample\WEB-INF\classes\xxx\toroku1.class
という形で置き、
<servlet-name>
toroku1
</servlet-name>
<servlet-class>
xxx.toroku1
</servlet-class>
といった感じでweb.xmlに記述します。
最初は誰でも初心者です。
がんばって下さい。
参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=508962
No.3
- 回答日時:
> <servlet-class>
> /servlet/toroku1.class
> </servlet-class>
servlet-classには、Servletのクラス名を記述します。
上記の記述だと、toroku1クラスはservletパッケージに
存在していると思いますので、
<servlet-class>
servlet.toroku1
</servlet-class>
となっていなければなりません。
この回答への補足
パッケージといわれているのは登録されたCONTEXTフォルダ内の子フォルダ以下にclassが存在している事を一般的にパッケージと言うんですよね。
webapps/Sample/classes/toroku.class
で存在していて、Sampleフォルダをserver.xmlにCONTESXT登録をしていれば、
上記のように設定すればよいという事ですか?
No.2
- 回答日時:
classesディレクトリにtoroku1.classという
クラスファイルが存在しないということはないですか?
この回答への補足
classファイル自体は存在しているのですが、
web.xmlの設定がおかしいのかと思うんですが・・・
server.xmlにはcontextを登録していますし
アプリ用のweb.xmlもアプリフォルダのWEB-INFの下に作成しました。
内容は
<?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>
<servlet>
<servlet-name>
toroku1
</servlet-name>
<servlet-class>
/servlet/toroku1.class
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>
toroku1
</servlet-name>
<url-pattern>
/SampleAdressApp1
</url-pattern>
</servlet-mapping>
</web-app>
とweb.xmlには登録し、呼び出し元からは
http://localhost:8080/SampleAdressApp1
を呼び出す形にしているのですが・・・・
なぜがエラーになります。
No.1
- 回答日時:
この回答への補足
当初、質問にあげかけていたエラーは解決されましたが、今度は別のエラーが発生しています。
Apache Tomcat/4.0.4 - HTTP Status 404 - /SampleAdressApp1
-------------------------------
type Status report
message /SampleAdressApp1
description The requested resource (/SampleAdressApp1) is not available.
-------------------------------
といったエラーです・・・
classの配置も、上記のNo.2回答での補足に追加した構成になっています。
なぜでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ソフトウェア) 至急!500 Internal Server Errorこのエラーはなんですか?原因と解決法教えてく 4 2022/06/21 15:50
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
- YouTube youtubeからの著作権メールについて 2 2023/02/14 16:12
- サーバー WindowsでApache が起動しない 1 2022/11/29 12:21
- TOEFL・TOEIC・英語検定 With its architecture and gardens and a wealth of 0 2022/12/17 16:11
- PHP eclipse pleiades phpのインストールについて 1 2023/02/03 17:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPからServletへの遷移
-
【Servletのエラーについて教え...
-
Servletが動かない
-
Strutsのtaglibについて
-
JSPからサーブレットを呼び出す...
-
Tomcatでサーブレットを動かそ...
-
サーブレットが起動しない
-
Eclipseで、プロジェクト名のと...
-
正しいURL指定しているにもかか...
-
html上で、バッチやexeファイル...
-
Eclipse(JAVA)のデバッグで他...
-
Eclipse・プロジェクトで、フォ...
-
JSPのクラスをコンパイルできな...
-
Javascriptの値をJava(JSP)へ渡...
-
split関数で区切り文字がない場合
-
「ワークスペースをビルド中」...
-
Eclipseのアンインストールの仕方
-
eclipseでスタックサイズを変更...
-
Log4jのインストール
-
Eclipseでパッケージ・エクスプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSPからServletへの遷移
-
servlet (resin) について
-
【Servletのエラーについて教え...
-
「javax.servlet.ServletExcept...
-
サーブレットが起動しない
-
servletでHTTPステータス404エ...
-
eclipse servlet 404対処方法
-
JSPからサーブレットを呼び出す...
-
サーブレットが実行できない
-
[Servlet]ページ表示に関して
-
Eclipseにおけるサーブレット作...
-
WEB開発をはじめたばかりの初心...
-
eclipse でjspからJavaを実行す...
-
resin.confの設定でご質問です
-
Tomcatでサーブレットを動かそ...
-
サーブレット フィルタ
-
Tomcat起動時にエラーが発生し...
-
テーブルにレコードを追加する...
-
HTTPステータス 404 - /servlet...
-
list<クラス名> とは何でしょう...
おすすめ情報