
コマンドを使ってjavaを実行しclassファイルを作成しようとしているのですが、実行できません。
実行したいパターンとしてhtml→javaファイルを呼び出す形にしたいのですが、クラスファイルができません。
javaファイルの存在する箇所に設定し,javac srv_escape.javaを記入すると
以下のエラーが出ました。このときの解決策はどのようにすればいいのでしょうか?
Exception in thread "main" java.lang.NoClassDefFoundError:com/sun/tools/javac/Main と出ます。
他のQ&Aを見たりはしてたのですがよくわからなかったので質問しました。
このときの状態としてjavaソースの場所はC:\Program Files\Apache Tomcat 4.0\webapps\jsp10でjavac.exeファイルあり。
htmlファイルはC:\Program Files\Apache Tomcat 4.0\webapps\jsp10\day08-2においています。
ソース内容が
html
<html><head>
<title>予約文字のエスケープ></title>
</head>
<body>
<h1>予約文字のエスケープ</h1>
<form name="POST" action=/jsp/servlet/srv_escape">
入力文字:
<input type="text" name="esc" size="30" />
<input type="submit" value="送信" />
</form>
</html>
java
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class srv_escape extends HttpServlet {
int i;
public void doPost(HttpServletRequest request,
HttpServletResponse response )
throws ServletException,IOException {
response.setGontentType("text/html;charset=Shift_JIS");
PrintWriter out=response.getWriter();
out.println("<html><head>");
out.println("<title>予約文字のエスケープ</title>");
out.println("</head><body>");
out.println(<h1>予約文字のエスケープ</h1>");
out.println("入力した文字:");
out.println(strEscape(request.getParameter("esc")));
out.println("</body></html>");
}
private String strEscape(String strEsc){
StringBuffer strResult=new StringBuffer();
for(int i=0;i<strEsc.length();i++){
switch(strEsc.charAt(i)){
case '&':
strResult.append("&");
break;
case '<' :
strResult.append("<");
break;
case '>' :
strResult.append(">");
break;
default:
strResult.append(strEsc.charAt(i));
break;
}
}
return strResult.toString();
}
}
です。
よろしくお願いします。

No.2ベストアンサー
- 回答日時:
>変わりにjavax.servlet/javax.servlet.httpは存在しません、というメーセージが表示されます。
それが、先の回答で書いた「次に必ず出くわすエラー」です。やっぱり、ライブラリを認識してませんね。
クラスパスが正しくないんでしょう。
あるいはJREおよびJDK内のJREのそれぞれのlibにあるextフォルダに、必要なライブラリファイルを全部コピーしてしまえば、クラスパスの指定をしなくても認識できるでしょう。
遅くなって申し訳ありません。
あれから色々試したところbinフォルダでは作成されますが、やはり
それ以外だと作成されないみたいです。
理由はわかりませんが。
丁寧な説明ありがとうございました。
また質問する機会があればよろしくお願いします。
回答ありがとうございました。

No.1
- 回答日時:
なんだかよくわからないので、ややあてずっぽうですが・・・。
まず、JDK(Java SE DK)はインストールされていますか?「javac.exeファイルあり」っていう記述が意味不明なのですが・・・。このjavac.exeっていうのは、どこにあるのですか。JDKのインストールされたディレクトリ内のことですか
Javaは、javax.exeだけコピーしても動きません。ちゃんとJDKをインストールしてはじめて動きます。まず、この点をきちんと確認してみてください。どうも標準で組み込まれるはずのクラスライブラリが抜けているように思えるので、インストールが正しく行われていないんじゃないでしょうか。
あと、見たところ、これは普通のJavaのプログラムではなくて、サーブレット
のようですね。ですから、Java EEのJSP/サーブレット関連のライブラリがクラスパスに置かれていないとコンパイルできません。上野店を確認して、javacがきちんと動くようになったら、おそらく必ずこの問題でエラーが起こるはずですので。
また、Tomcat 4というのはけっこう古いので、何かの書籍を参考にされているのかも知れませんが、なるべく新しい、きちんとした参考書などを見たほうがよいかと思います。
丁寧な説明ありがとうございました。
Tomcat5.5/JDK1.5に変更して実行してみました。
何度か試したところ
Exception in thread "main" java.lang.NoClassDefFoundError:com/sun/tools/javac/Main のようなエラーは出なくなったのですが、
変わりにjavax.servlet/javax.servlet.httpは存在しません、というメーセージが表示されます。
これはおそらくservlet/servlet.httpがないということだと思うのですが、原因は何なのでしょうか?
実行したいjavaソースと同じフォルダにないからなのでしょうか?
CLASS_PATHは.;CATALINA_HOME%\common\lib\servlet.jar;%CATALINA_HOME%\common\lib\jsp-\api.jar;%CATALINA_HOME%\webapps\jsp10と設定してます。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
「main メソッドを持つクラスが...
-
Eclipse「リフレッシュ」と「ク...
-
プログラム実行の際に、「ソー...
-
JARの使い方
-
eclipse でclassesフォルダーが...
-
SVFの設定について:クラスパス...
-
classファイルについて
-
サーバから落としてきたWebアプ...
-
jdbcドライバのjarファイルにク...
-
ejb-jarファイルの間違いが分か...
-
ファイルのパスの取得について
-
JARファイル・JARコマンドに関して
-
jarの分割に関するベストプラク...
-
「至急」 教えてください。メ...
-
コンパイルをしようとするとエ...
-
JARのパスの通し方
-
プログラミング初心者なんです...
-
JADで*.jarごとデコンパイルす...
-
Eclipseで、クラスを新規作成す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
classファイルについて
-
SVFの設定について:クラスパス...
-
Eclipse・プロジェクトで、フォ...
-
javaクラスファイルをEclipseで...
-
Eclipse「リフレッシュ」と「ク...
-
earファイルを展開する方法
-
eclipse でclassesフォルダーが...
-
「メイン・マニフェスト属性が...
-
jdbcドライバのjarファイルにク...
-
【Eclipse】パッケージ・エクス...
-
java クラスファイルとソースコ...
-
プログラム実行の際に、「ソー...
-
EclipseでHTTP404エラーが出る。
-
Jarコマンドでマニフェストファ...
-
「main メソッドを持つクラスが...
-
サーバから落としてきたWebアプ...
-
EclipseでのJSP・Servlet開発に...
-
「削除するか、クラスパスの正...
-
ファイルのパスの取得について
-
VisualStudioでC++クラスを追加...
おすすめ情報