出産前後の痔にはご注意!

初心者です。既存eclipse環境に、Tomcatを使える様設定したのですが、
タイトルのようなエラーで困っています。環境は
OS:WindowsXPSP2
Tomcat:5.5
eclipse:3.2
です。
まず、Tomcatを単体で使う際のデータの保存先を「c:\webapps\ROOT」としているため、
Tomcatインストールパスのserver.xmlのappbaseの記述を"webapps"から"c:\webapps"に変更しています。

この状態で、eclipseに「動的Webプロジェクト」を作成し、
「サーバー」としてTomcatサーバを追加し、
JSPプログラムを作成して実行したところHTTP404エラー
「ドキュメントベース c:\webapps\"プロジェクト名" が存在しない、又は読めないディレクトリです」
が出てしまいました。

色々調べた結果、eclipse上の「サーバー」としてTomcatサーバを追加したとき
Tomcatインストールパスのserver.xmlをインポートしているようですが、
appbaseの記述を"webapps"から"c:\webapps"としているせいでその下を見に行っているようです。
server.xmlのappbaseの記述を"c:\webapps"から"webapps"に戻したところ動作するようになったのですが、

(ここからが質問ですが、)
別の環境では、(Vista-Tomcat6.0-eclipse3.4)server.xmlを直さなくても正常に動作します。
ということは、どこかほかの所にもっと優先されるパスの設定があるのではないか?と思うのですが、
それらしいところが見つかりません。

どなたかご教授いただけないでしょうか?
よろしくお願いします。

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

A 回答 (1件)

Tomcat 6.0のドキュメントにコンテキストの設定について以下のような記述があります。



In the $CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default file: the Context element information will be loaded by all webapps of that host.

デフォルトのままであれば、
[Tomcatディレクトリ]/conf/Catalina/localhost/コンテキスト名.xml
のXMLファイルが出来ていると思います。

server.xmlに設定がない場合、上記のXMLが設定ファイルになります。

#Tomcat 6.0の日本語ドキュメントを探したのですが見当たらなかったので、原文(英語)から引用されて頂きました。

参考URL:http://tomcat.apache.org/tomcat-6.0-doc/config/c …

この回答への補足

ご質問の意図が分かりにくくなっていたらすみません。
問題が出ているPC(XP-Tomcat5.5-eclipse3.2)で、server.xmlを直さなくてもいい方法を知りたいです。

問題の出ていない方は[Tomcatディレクトリ]/conf/Catalina/localhost/に何もなかったです。
問題の出ているPCは[Tomcatディレクトリ]/conf/Catalina/localhost/にhost-manager.xmlとmanager.xmlというファイルがあり、
試しに消しても結果は同じでした。

補足日時:2009/06/09 12:59
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

お礼日時:2009/07/08 18:12

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

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

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

Q「httpステータス404」というエラーが出ます。

「httpステータス404」というエラーが出ます。

java初心者です、宜しくお願い致します。
EclipseでServletを書いてやりましたが、以下のようなエラーが出ます、
原因はなんでしょうか、宜しくお願い致します。
「httpステータス404-/Servlet%E7%B7%B4%E7%BF%92/ ServOutput」

Aベストアンサー

Not Found
という意味です。
そのファイルが無い。あるいはリンクが間違っています。
詳しくは参考URLをみてください。

参考URL:http://ja.wikipedia.org/wiki/HTTP_404

QHTTPステータス404表示されてしまう

環境:Eclipce3.2、Tomcat5.5.2、JDK1.5.0_11を使用。

○サーブレットプログラム
package dispatch;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ForwardServlet2 extends HttpServlet
{
private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request ,
HttpServletResponse response)
throws ServletException , IOException
{
PrintWriter out = response.getWriter();
out.println("Hello by Eclipse");
}
}

○web.xmlの内容は以下の通り
<web-app>
<!-- JSPC servlet mappings start -->
<servlet>
<servlet-name>ForwardServlet2</servlet-name>
<servlet-class>dispatch.ForwardServlet2</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>ForwardServlet2</servlet-name>
<url-pattern>/ForwardServlet2</url-pattern>
</servlet-mapping>
<!-- JSPC servlet mappings end -->
</web-app>

アクセスはhttp://localhost:8080/basic/dispatch/ForwardServlet2

アクセスすると、

type ステータスレポート
メッセージ /basic/dispatch/ForwardServlet2
説明 The requested resource (/basic/dispatch/ForwardServlet2) is not available.

が表示されてしまいます。
何度も最初から作り直しては、見直しをしましたが
エラーになる原因をつかむことができない状態です。
間違い、不足している箇所がありましたら、ご指摘の程お願い致します。

環境:Eclipce3.2、Tomcat5.5.2、JDK1.5.0_11を使用。

○サーブレットプログラム
package dispatch;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ForwardServlet2 extends HttpServlet
{
private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request ,
HttpServletResponse response)
throws ServletException , IOException
{
PrintWriter out = response.getWriter();
out.println("Hello by Eclipse");...続きを読む

Aベストアンサー

 まず考えられる可能性は、
http://localhost:8080/basic/ForwardServlet2
でアクセスすると見えるかも知れないという事かな。

パッケージdispatchはあくまでJava側の話であって、コンテキストパスからの相対URLには何の関係もない。ここで、コンテキストパスとは/basicの事だ。もちろん、コンテキストパスが/basic/dispatchである可能性もあるが、それはあなたにしか分からない。TomcatのどこにそのWebアプリケーションをデプロイしたかが問題だ。

web.xmlの中では、servletタグによってフルクラス名(dispatch.ForwardServlet2)にForwardServlet2という名前をつけ、servlet-mappingタグによって名前をつけたForwardServlet2を/ForwardServlet2という「コンテキストパスからの相対パス」でアクセスできるようにしているんだ。だから、そのEclipseのプロジェクトにindex.jspを置いてみて、それが
http://localhost:8080/basic/inde.jsp
でアクセスできるのであれば、サーブレットには
http://localhost:8080/basic/ForwardServlet2
でアクセスする事になる。

説明が不足している箇所は、Tomcatのどこ(どんなコンテキストパス名)に君が作ったWebアプリをデプロイしているか、だな。URLが間違っている、という場合は、質問を受けている人がURLを構成できるだけの情報をあげんといけん。

 まず考えられる可能性は、
http://localhost:8080/basic/ForwardServlet2
でアクセスすると見えるかも知れないという事かな。

パッケージdispatchはあくまでJava側の話であって、コンテキストパスからの相対URLには何の関係もない。ここで、コンテキストパスとは/basicの事だ。もちろん、コンテキストパスが/basic/dispatchである可能性もあるが、それはあなたにしか分からない。TomcatのどこにそのWebアプリケーションをデプロイしたかが問題だ。

web.xmlの中では、servletタグによってフルクラス名(di...続きを読む

Qeclipseとtomcatで404エラー

-----------------------------------
Windows7 Ultimate

eclipse Indigo
tomcat 5.5
-----------------------------------

eclipseとtomcatを使用して、JSPを動かそうとしています。
eclipseとtomcatとJDKはC:\pleiadesの下に配置しています。そしてワークスペースは
C:\workspace\Testとして登録しています。(ちなみに動的Webプロジェクトで作成しています)

既存のJSPファイルをeclipse上で右クリックして、サーバーで実行とすると、eclipseの画面上にきちんと表示されるのですが、その後、そこで動いていたtomcatを終了させて、eclipseの上部にあるtomcatのアイコンをクリックし、その後、通常のブラウザで表示させようとすると404エラーが出てしまいます。(http://localhost:8080/Test/test.jsp)

そもそも右クリック→実行の際に起動するtomcatとeclipse上部にアイコンで存在するtomcatはどう違うのでしょうか?

そしてどうすれば、上部のtomcat起動からブラウザで直接JSPを呼び出すことが出来るのでしょうか?

申し訳ありませんが、ご教授お願い致します。

-----------------------------------
Windows7 Ultimate

eclipse Indigo
tomcat 5.5
-----------------------------------

eclipseとtomcatを使用して、JSPを動かそうとしています。
eclipseとtomcatとJDKはC:\pleiadesの下に配置しています。そしてワークスペースは
C:\workspace\Testとして登録しています。(ちなみに動的Webプロジェクトで作成しています)

既存のJSPファイルをeclipse上で右クリックして、サーバーで実行とすると、eclipseの画面上にきちんと表示されるのですが、その後、そこで動いてい...続きを読む

Aベストアンサー

EclipseからTomcatを起動した場合、プロジェクトに生成されたWebアプリケーションのディレクトリをTomcatの公開ディレクトリに強制的に変更しています。普通に起動すると、プロジェクトのディレクトリはTomcatの公開ディレクトリにはなっていませんから表示は出来ません。

通常、Eclipseで作成したWebアプリケーションは、WARファイル(Webアーカイブ)として書き出し、それをデプロイします。Eclipseの「エクスポート」メニューでWARファイルを作成し、そのファイルをTomcatの「webapp」フォルダに入れてください。これで公開できるはずです。

Qeclipse servlet 404対処方法

初めて質問させて頂く者です。宜しくお願いします。Java初心者です。
eclipse4.3のtomcatプロジェクトを使い、以下のServletコードを作成しました。
ブラウザアドレスバーに以下アドレスを入れて実行しましたが、HTTPステータス404が表示されます。
どのように改善したら良いかアドバイスをお願い致します。長文申し訳ございません。本当に困っています。

環境:windows8.1 eclipse4.3
ディレクトリ:jwapp(プロジェクト名)
-test(パッケージ名)
-First(ファイル名)
指定アドレス:localhost:8080/jwapp/servlet/test.First

web.xmlファイルはWEB-INFの中に置いています。
記述は以下のとおりです。↓

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app
version="2.5"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd">
<servlet>
<servlet-name>first</servlet-name>
<servlet-class>test.First</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/first</url-pattern>
</servlet-mapping>
</web-app>

Servletのコードは以下のとおりです。↓

package test;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class First01 extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws IOException,ServletException{
res.setContentType("text/html;charset=Shift_JIS");
PrintWriter out=res.getWriter();
out.println("<html)");
out.println("<head>");
out.println("<title>テスト</title>");
out.println("<h1>テスト</h1>");
out.println("</body>");
out.println("</heml>");
}
}

初めて質問させて頂く者です。宜しくお願いします。Java初心者です。
eclipse4.3のtomcatプロジェクトを使い、以下のServletコードを作成しました。
ブラウザアドレスバーに以下アドレスを入れて実行しましたが、HTTPステータス404が表示されます。
どのように改善したら良いかアドバイスをお願い致します。長文申し訳ございません。本当に困っています。

環境:windows8.1 eclipse4.3
ディレクトリ:jwapp(プロジェクト名)
-test(パッケージ名)
-First(ファイル名...続きを読む

Aベストアンサー

publicクラス名は、ファイル名と同じにします。
web.xmlのur-pattern要素が/firstならば、urlは下記になります。

http://localhost:8080/jwapp/first

QTomcatは起動しますが初期index画面が表示できません

Tomcatについての質問は多数寄せられておりますが、
それらを参考にしてインストールなど行いますが、
どうしても後一歩のところで私の場合表示できないという、もどかしい状態になっております。
どうかご存知の方いらっしゃいましたらご教示お願い申し上げます。

Tomcat5.0をWindowsXPで起動しております。
Javaはj2sdk1.4.1_02です。
通常インストールした後Startup.batを起動し、IE6.0で
http://localhost:8080もしくは
http://127.0.0.1:8080と入力、Enterキーを押しますが、画面に
Connection refused
--------------------
Description: Connection refused
と表示されてしまいます。

下記に参考になるかわかりませんが、各種起動状態を記載いたします。アドバイスよろしくお願い申し上げます。

◆コマンドプロンプトで
>ping localhostと入力すると、
-----
Pinging yamamoto [127.0.0.1] with 32 bytes of data:

Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
-----

と表示されます。また、
>telnet localhost 8080の場合は
-----
接続中: localhost...ホストへ接続できませんでした。 ポート番号 8080: 接続に失敗し
ました
-----
と表示されます。

お手数ですが、よろしくお願い申し上げます。

Tomcatについての質問は多数寄せられておりますが、
それらを参考にしてインストールなど行いますが、
どうしても後一歩のところで私の場合表示できないという、もどかしい状態になっております。
どうかご存知の方いらっしゃいましたらご教示お願い申し上げます。

Tomcat5.0をWindowsXPで起動しております。
Javaはj2sdk1.4.1_02です。
通常インストールした後Startup.batを起動し、IE6.0で
http://localhost:8080もしくは
http://127.0.0.1:8080と入力、Enterキーを押しますが、画面に
Connection re...続きを読む

Aベストアンサー

>Tomcatは起動しますが
とのことですが、Tomcatが起動していないと思います。

pingが通るのはTomcatと無関係で、PCが立ち上がっていれば帰ってくると思います。

telnet localhost 8080
で接続できないとのことなので、Tomcatが起動できていないのではないでしょうか?

Qeclipseで、「ポート番号が使用中です」と表示されて困っています。

プログラムの勉強を始めたばかりなので、拙い質問ですが、ご存じの方は、是非、よろしくお願いします・・・。

eclipseを使って、webアプリケーションを作成しようとしたのですが、
JSP作成後、デバッグを行うと、
「localhostのTomcatv6.0サーバーで
必要な幾つかのポート(8005,8080,8009)が既に使用中です。サーバー
は既に別のプロセスで稼働中であるか、システム・プロセスがそのポートを使用中である可能性があります。このサーバーを始動するには、他のプロセスを停止するか、ポート番号を変更する必要があります。」
と表示され、デバッグできませんでした・・・。
そこで、Active Portsをダウンロードして使用中のポート番号を調べると、同じ番号のものはありません・・・。
さらに、いろいろネットで調べると、oracleをインストールしているとポート番号が競合する、とかいてあったのですが、oracle10gをインストールしたので、このせいなのでしょうか??
その為、oracleを削除したのですが・・・。
そこまでしか、対処方法はわからず、行き詰まりました。
この場合、一体、どう対処したらよいのでしょうか・・・??
現在の環境は、
・windowsXP、jdk1.6.0_03、jre1.6.0_06
・Tomcat6.0
・eclipse3.3→eclipseの「設定」からインストールしたTomcatを登録しました。
・oracle10g

以上、長くなりましたが、本当に困っているので、よろしくお願いします・・・。

プログラムの勉強を始めたばかりなので、拙い質問ですが、ご存じの方は、是非、よろしくお願いします・・・。

eclipseを使って、webアプリケーションを作成しようとしたのですが、
JSP作成後、デバッグを行うと、
「localhostのTomcatv6.0サーバーで
必要な幾つかのポート(8005,8080,8009)が既に使用中です。サーバー
は既に別のプロセスで稼働中であるか、システム・プロセスがそのポートを使用中である可能性があります。このサーバーを始動するには、他のプロセスを停止するか、ポート番号を変更する必...続きを読む

Aベストアンサー

Eclipseでサーバサイドプログラムを作成する場合、
Webアプリのための標準プラグインEclipse Web Tools Project(WTP)がなくてはならないものです。
HTMLやCSS、JSP、XSD等のエディタ、J2EEサーバとの連携機能、
Webサービス構築機能、DBアクセス機能等を提供してくれます。

1)WTPプラグインがインストールされており、
Eclipseウィンドウ全体「ワークベンチ」の左側に
プロジェクト・エクスプローラーにServersのフォルダが表示されており、
フォルダ内にlocalhost の Tomcat v5.5 サーバー-config
catalina.policy
catalina.properties
server.xml
tomcat-users.xml
web.xml
が表示されている。
2)Eclipse画面中央部エディタの下部に
Javadocビューや宣言ビューは問題ビューと同じ場所にサーバータブとして重ねて表示されている。
3)プロジェクト・エクスプローラーで、プロジェクトを右クリックで表示されるメニューの中の実行→サーバーで実行を選択すると、サーバーで実行のウィンドウから実行した結果のエラーメッセージ localhostのTomcatv6.0サーバーで
必要な幾つかのポート(8005,8080,8009)が既に使用中です。…である。

以上1)から3)を前提としますと、

【原因】
Tomcatが実行中であるためです。 
Eclipse Web Tools Project(WTP)は、Tomcatを実行します。
したがって、Tomcatが実行中であるため、既に使用中です。
と警告しているのです。

【対応】
Tomcat ManagerからStop serviceを選択して、Tomcatを停止しておき、
実行→サーバーで実行して、Eclipseウィンドウのサーバータブを見ると
Tomcatを実行している様子が見られると思います。
コンソールタブには、ログが表示されると思います。

以上です。

Eclipseでサーバサイドプログラムを作成する場合、
Webアプリのための標準プラグインEclipse Web Tools Project(WTP)がなくてはならないものです。
HTMLやCSS、JSP、XSD等のエディタ、J2EEサーバとの連携機能、
Webサービス構築機能、DBアクセス機能等を提供してくれます。

1)WTPプラグインがインストールされており、
Eclipseウィンドウ全体「ワークベンチ」の左側に
プロジェクト・エクスプローラーにServersのフォルダが表示されており、
フォルダ内にlocalhost の Tomcat v5.5 サーバー-config
...続きを読む

QEclipse「リフレッシュ」と「クリーン」の違い

Eclipseでプロジェクト「リフレッシュ」と「クリーン」がありますが、どう違うのでしょうか?

■質問背景
・Androidでエミュレータ内容が切り替わらないときがあるのですが、キャッシュか何か関係あるのかな、と思い質問しました

Aベストアンサー

Androidエミュレータはわかりません。
Eclipseでは、下記のことを指しています。
リフレッシュ→OSのファイルシステムと、Eclipseのワークスペースのファイル構造を同期すること。
クリーン→クリーンは、クリーンビルドのことでjavaのclassファイル等の成果物を削除し、コンパイルし直すこと。

QEclipseでHTTP404エラーが出る。

EclipseでJAVAの練習してるのですが、
ここ最近HTTP404エラーが頻発して困ってます。
何が原因かわかりません。ちなみに参考書として使ってるのは、著:国本大吾さんのスッキリわかるサーブレット&JSPです。
<詳細>
[URL]http://localhost:8080/docoTsubu/WEB-INF/classes/model/User.java

HTTPステータス 404 -
type ステータスレポート
メッセージ
説明 The requested resource is not available.
Apache Tomcat/7.0.54

このようにエラーが出てしまいます。
気になったのが、私はUser.javaをWEB-INFディレクトリーに入れてません。
URLに間違いがあるのかもしれないと思い、URLのWEB-INF/classes/を消して実行しましたが、だめでした。
次はWEB-INFに入れないといけない物なのかもしれないと思いモデルごとWEB-INFに入れて実行しましたが、だめでした。

この後、全部削除してもう一度やり直すってこともやってみましたが、だめでした。
もうどうしたらいいのかわかりません。どなたかお助けください。

EclipseでJAVAの練習してるのですが、
ここ最近HTTP404エラーが頻発して困ってます。
何が原因かわかりません。ちなみに参考書として使ってるのは、著:国本大吾さんのスッキリわかるサーブレット&JSPです。
<詳細>
[URL]http://localhost:8080/docoTsubu/WEB-INF/classes/model/User.java

HTTPステータス 404 -
type ステータスレポート
メッセージ
説明 The requested resource is not available.
Apache Tomcat/7.0.54

このようにエラーが出てしまいます。
気になったのが、私はUser.javaをWEB-INFディレク...続きを読む

Aベストアンサー

書籍は持っていないので詳細は分かりませんが、Tomcatなどを使った簡単なWebアプリケーションのようですね。
ちなみに、HTTP404は、File not foundなので、「URLで指定された対象のファイルは見つからないよ!」という内容です。

アクセスしようとしているURLに、凄く違和感があります。
URLでWEB-INFの下のJavaソースコードに直接アクセスしようとしているようですが、これが間違いです。(書籍にもそう書いてありますか?)
たいていは、JSPを介して、そこからUser.javaを利用する形になると思うのですが。
(User.javaはmodelの下に入っているので、単純なJavaのクラス(サーブレットなどでは無く)だと思う)

Q実行時のNoClassDefFoundErrorが解決できません

Windows で コマンドプロンプトから Java のプログラム実行時に
NoClassDefFoundError が発生する問題で
Web 等を参考にいろいろ対処してみたのですが、
どうしても解決しないでいます。

JDK, JRE は 1.6.0_01 を以下にインストールしており、
C:\Program Files\Java\jdk1.6.0_01
C:\Program Files\Java\jre1.6.0_01

C:\Program Files\Java\jdk1.6.0_01\bin にPATHを通しています。
CLASSPATH 環境変数は設定していません。
その上で、以下のことをやりました。

(1) HelloWorld.java というファイルを D:\test フォルダに作成する。
  内容は以下の通り。

HelloWorld.java
-------------------------------------------------------------------------------
package testpackage;

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
-------------------------------------------------------------------------------

(2) コマンドプロンプトで D:\test に移動し、以下を実行する。

javac HelloWorld.java
(正常終了し、HelloWorld.class が D:\test に作成されたことを確認)

(3) 引き続きコマンドプロンプトで、以下を実行する。(例外が発生)

java HelloWorld
-------------------------------------------------------------------------------
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong nam
e: testpackage/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
-------------------------------------------------------------------------------

Web の情報を参考に

java -cp . HelloWorld
java -cp D:\test HelloWorld

も実行してみましたが、同様の結果でした。

(4) 試しに以下も実行してみました。

javap HelloWorld
-------------------------------------------------------------------------------
Compiled from "HelloWorld.java"
public class testpackage.HelloWorld extends java.lang.Object{
public testpackage.HelloWorld();
public static void main(java.lang.String[]);
}
-------------------------------------------------------------------------------


以上です。
これ以上の対処方法が全く思い当たらない状態なのですが、
原因のわかる方がいらっしゃいましたらお願いします。

Windows で コマンドプロンプトから Java のプログラム実行時に
NoClassDefFoundError が発生する問題で
Web 等を参考にいろいろ対処してみたのですが、
どうしても解決しないでいます。

JDK, JRE は 1.6.0_01 を以下にインストールしており、
C:\Program Files\Java\jdk1.6.0_01
C:\Program Files\Java\jre1.6.0_01

C:\Program Files\Java\jdk1.6.0_01\bin にPATHを通しています。
CLASSPATH 環境変数は設定していません。
その上で、以下のことをやりました。

(1) HelloWorld.java というファ...続きを読む

Aベストアンサー

Javaのクラスファイルは、packageの階層と同じディレクトリ構造にしないといけません。

質問者さんの例なら、D:\testの下にtestpackageというディレクトリを作り、
その中にコンパイルしたHelloWorld.classを入れます。
そして、D:\test からコマンドプロンプトで

java testpackage.HelloWorld
もしくは
java testpackage/HelloWorld

で起動できます。

QUTF-8で書かれたJSPの日本語文字コード変換の正しい方法がわかりません

nagilumと申します。
「10日でおぼえるJSP/サーブレット 入門教室」という、2002年に発売された
ちょっと旧い本で勉強をしています。

下記はその中のJSPのコードで、クライアント(ウェブブラウザ)から受け取った
文字列をハッシュのキーとして検索して、値の内容を表示するものです。

ウェブブラウザから正しい(ハッシュに存在するキー)文字列を入力しても、
ハッシュのキーにヒットしません。
日本語の文字コードの問題のようですが、下記のコードをどのように修正すれば
よいのかわかりません。
すみません、助けてください。

クライアント(ウェブブラウザ)は Windows (Shift_JIS) です。
サーバ(Apache+Tomcat)は Fedora Core 4 (UTF-8) です。

よろしくお願いします。


1 <%@ page contentType="text/html;charset=UTF-8" import="java.util.*,java.io.*" %>
2 <%!
3 public String strEncode( String strVal ) throws UnsupportedEncodingException {
4 if( strVal == null ){ 5 return null;
6 }
7 else {
8 return new String( strVal.getBytes( "ISO-8859-1" ), "JISAutoDetect" );
9 }
10 }
11 %>
12 <html>
13 <head>
14 <title>アドレス帳検索(検索結果)</title>
15 </head>
16 <body>
17 <h1 style="background:#cccccc">アドレス帳検索</h1>
18 <%
19 HashMap hm = new HashMap();
20 hm.put( "輪笠貴子", "女, 0xx-xxx9-1111,横浜市まるばつ町5-18-199" );
21 hm.put( "佐々木健司", "男,04x-231x-xxxx,川崎市まるまる町1-3213" );
22 hm.put( "鳥内都", "女,09x-21xx-xx97,横浜市なになに区5-16" );
23 hm.put( "金崎瑞穂", "女,02x-654x-324x,相模原市なんとか区1-9-21" );
24 String strName = strEncode( request.getParameter( "name" ) );
25 if( hm.containsKey( strName ) ){
26 String strResult = (String)hm.get( strName );
27 StringTokenizer tkn = new StringTokenizer( strResult, "," );
28 %>
29 <dl>
30 <dt style="font-size:14pt;font-weight:bold">
31 <%= strName %>
32 </dt>
33 <dd>
34 <ol>
35 <li><%= tkn.nextToken() %></li>
36 <li><%= tkn.nextToken() %></li>
37 <li><%= tkn.nextToken() %></li>
38 </ol>
39 </dd>
40 </dl>
41 <%
42 }
43 else {
44 %>
45 <div style="color:Red">指定された名前は見つかりませんでした</div>
46 <%
47 }
48 %>
49 </body>
50 </html>

↑きちんと整形したコードをペーストしたのですが、
ブランクが全部削られてしまってとても読みにくくなってます。
ごめんなさい。

nagilumと申します。
「10日でおぼえるJSP/サーブレット 入門教室」という、2002年に発売された
ちょっと旧い本で勉強をしています。

下記はその中のJSPのコードで、クライアント(ウェブブラウザ)から受け取った
文字列をハッシュのキーとして検索して、値の内容を表示するものです。

ウェブブラウザから正しい(ハッシュに存在するキー)文字列を入力しても、
ハッシュのキーにヒットしません。
日本語の文字コードの問題のようですが、下記のコードをどのように修正すれば
よいのかわかりま...続きを読む

Aベストアンサー

1.このソースをUTF-8で保存していること。
※例えばWindowsのメモ帳だとShift_JIS(Windows-31J)で保存されてしまいます。
2.Tomcatのconfフォルダ内にあるweb.xmlでJSPのjavaEncodingをUTF-8で指定していること。
※確かTomcatはデフォルトでUTF-8だった気がしますが、念のため
3.8行目の
>return new String( strVal.getBytes( "ISO-8859-1" ), "JISAutoDetect" );
ですが
JISAutoDetectの場合UTF-8は自動認識されなかったと思います。
基本的に自動にまかせるのではなくクライアントから送出される文字コードがわかっている場合は明示すべきです。
今回は"JISAutoDetect"を"UTF-8"に変えてみてください。

以上の条件を満たせば正しく動くかと思いますのでご確認頂ければと思います。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング