コマンドを使って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で質問しましょう!
似たような質問が見つかりました
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
eclipse でclassesフォルダーが...
-
javaクラスファイルをEclipseで...
-
「削除するか、クラスパスの正...
-
Eclipse「リフレッシュ」と「ク...
-
SVFの設定について:クラスパス...
-
javax.mailがimportできない
-
classファイルについて
-
java.io.Fileクラスは絶対パス...
-
Java Webアプリ。PDFダウンロード
-
Javaアプリケーションのアイコ...
-
普段、importするクラスはどこ...
-
『ClassNotFoundException: org...
-
「main メソッドを持つクラスが...
-
jdbcドライバのjarファイルにク...
-
eclipseでjarのエクスポートが...
-
「メイン・マニフェスト属性が...
-
【Eclipse】パッケージ・エクス...
-
struts.jarファイルについて
-
名前空間とヘッダーファイル
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
classファイルについて
-
javaクラスファイルをEclipseで...
-
Eclipse「リフレッシュ」と「ク...
-
SVFの設定について:クラスパス...
-
eclipse でclassesフォルダーが...
-
【Eclipse】パッケージ・エクス...
-
earファイルを展開する方法
-
EclipseでHTTP404エラーが出る。
-
jdbcドライバのjarファイルにク...
-
プログラム実行の際に、「ソー...
-
「メイン・マニフェスト属性が...
-
「削除するか、クラスパスの正...
-
コンパイルをしようとするとエ...
-
java クラスファイルとソースコ...
-
『ClassNotFoundException: org...
-
javax.mailがimportできない
-
ResourceBundleクラスの使い方
-
macでのファイル場所指定
-
「main メソッドを持つクラスが...
おすすめ情報