JBuilder5 Professionalを使って開発しようと
しています。手始めに、
簡単なServletのサンプルの実行はできたのですが
JSPとBeanをあわせたサンプルの実行で
エラーがおきてしまいます。
実際やってみたのは下記のサンプルです。
http://www.atmarkit.co.jp/fjava/rensai/jbias02/j …

このとおりにしてJSPを実行すると以下のような
エラーメッセージがでてきます。(長いのですが活用します)
また、JBuilderに付属のSampleを使っても同様のエラーに
なります。
これは、tools.jarファイルをおく位置が関係
しているということでしょうか?(エラーに
でているので・・・)
何かご教授願いたく思います。よろしくお願いします。


***エラーメッセージ***************
Error: 500 Location: /jspwebapp/JSPWithCounter.jspInternal Servlet Error:javax.servlet.ServletException: sun/tools/javac/Main
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:399)
・・・こんな感じでつづきます。


実験環境は以下の通りです。
WindowsNT4
JBuilder5 pro
jdk1.3

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

A 回答 (1件)

JBuilder5を直接使っている訳ではないので、曖昧なアドバイスで申し訳ありませんが、JBuilder5のServlet/JSPデバック用コンテナってTomcatですよね。


Tomcat単独で使用する場合は、javacを見つける為に環境変数JAVA_HOMEを設定する必要があります。JBuilder5ではどこかのダイアログにこれに相当する設定フィールドがあるかもしれません。もし上記エラーが「javacがみつからん」というものならこれを見直して下さい。
それにしても上記のエラーメッセージ抜粋では割愛し過ぎでよく分からないので、もう少し載せて頂いた方が良いと思います。

この回答への補足

早い回答ありがとうございます!!!

エラーはかなり長かったので省略してたのです。
すみません。以下にはっておきます。

E:\JBuilder5\jdk1.3\bin\javaw -classpath
"E:\JBuilder5\jakarta-tomcat-3.2.1\lib\webserver.jar;E:\JBuilder5\jakarta-tomcat-3.2.1\lib\jasper.jar;E:\JBuilder5\jakarta-tomcat-3.
2.1\lib\parser.jar;E:\JBuilder5\jakarta-tomcat-3.2.1\lib\jaxp.jar;E:\JBuilder5\jakarta-tomcat-3.2.1\lib\servlet.jar;E:\JBuilder5\lib
\webserverglue.jar;E:\JBuilder5\jdk1.3\demo\jfc\Java2D\Java2Demo.jar;E:\JBuilder5\jdk1.3\jre\lib\i18n.jar;E:\JBuilder5\jdk1.3\jre\li
b\jaws.jar;E:\JBuilder5\jdk1.3\jre\lib\rt.jar;E:\JBuilder5\jdk1.3\jre\lib\sunrsasign.jar;E:\JBuilder5\jdk1.3\lib\dt.jar"
org.apache.tomcat.startup.Tomcat -config E:\untitled4\conf\server8080.xml
Starting tomcat. Check logs/tomcat.log for error messages

2001-07-25 05:41:01 - ContextManager: Adding context Ctx( )

2001-07-25 05:41:01 - Ctx( ): Removing duplicate servlet jsp jsp(org.apache.jasper.servlet.JspServlet/null)

2001-07-25 05:41:01 - Ctx( ): Removing duplicate *.jsp -> jsp(org.apache.jasper.servlet.JspServlet/null)

2001-07-25 05:41:01 - Ctx( ): File not found E:\untitled4\conf\tomcat-users.xml

2001-07-25 05:41:01 - PoolTcpConnector: Starting HttpConnectionHandler on 8080

2001-07-25 05:41:01 - PoolTcpConnector: Starting Ajp12ConnectionHandler on 8081

2001-07-25 05:41:02 - Ctx( ): IOException in: R( + / + null) Not an ISO 8859_1 character:水

2001-07-25 05:41:02 - path="" :jsp: init

2001-07-25 05:41:02 - Scratch dir for the JSP engine is: E:\untitled4\work\localhost_8080

2001-07-25 05:41:02 - IMPORTANT: Do not modify the generated servlets

2001-07-25 05:41:02 - JspEngine --> /Jsp1.jsp

2001-07-25 05:41:02 - ServletPath: /Jsp1.jsp

2001-07-25 05:41:02 - PathInfo: null

2001-07-25 05:41:02 - RealPath: E:\untitled4\defaultroot\Jsp1.jsp

2001-07-25 05:41:02 - RequestURI: /Jsp1.jsp

2001-07-25 05:41:02 - QueryString: null

2001-07-25 05:41:02 - Request Params:

2001-07-25 05:41:02 - Classpath according to the Servlet Engine is: E:\untitled4\defaultroot\WEB-INF\classes

2001-07-25 05:41:03 - Ctx( ): Exception in: R( + /Jsp1.jsp + null) - javax.servlet.ServletException: sun/tools/javac/Main

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:399)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)

at org.apache.tomcat.core.Handler.service(Handler.java:286)

at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)

at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)

at org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)

at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210)

at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)

at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)

at java.lang.Thread.run(Thread.java:484)

Root cause:

java.lang.NoClassDefFoundError: sun/tools/javac/Main

at com.borland.jbuilder.webserverglue.tomcat.jsp.JasperSunJavaCompiler.compile(Unknown Source)

at org.apache.jasper.compiler.Compiler.compile(Compiler.java:245)

at org.apache.jasper.servlet.JspServlet.doLoadJSP(JspServlet.java:462)

at org.apache.jasper.servlet.JasperLoader12.loadJSP(JasperLoader12.java:146)

at org.apache.jasper.servlet.JspServlet.loadJSP(JspServlet.java:433)

at org.apache.jasper.servlet.JspServlet$JspServletWrapper.loadIfNecessary(JspServlet.java:152)

at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:164)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:318)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:391)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404)

at org.apache.tomcat.core.Handler.service(Handler.java:286)

at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)

at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)

at org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)

at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210)

at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)

at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)

at java.lang.Thread.run(Thread.java:484)


>JBuilder5ではどこかのダイアログにこれに
>相当する設定フィールドがあるかもしれません。

えーと。
メニューバーのツールから
JDKの設定でtool.jarをセットして、
同じくライブラリの設定で
Tomcatのクラス(セットしていないものは全部)を
セットしました。

これで、メッセージウィンドウにtools.jar
はクラスパスで通っている表示されたんですが
Web実行がうまくいきませんでした。

実は、色々試したところ、
JBuilderのtools.jarファイルがこわれていたようです。

??
というか、jdk1.3.0_01(単独でダウンロードした方)の
tools.jarファイルをJBuilderにいれたところ、
JSP&Bean連携のプログラムが動きました。

しかし、JBuilderはjdk1.3.0_02でバージョンが違うんですが
いいんでしょうか。。不安はのこります。
JBuilderのバグでしょうか?

とにかく、ありがとうございました!!

補足日時:2001/07/27 08:52
    • good
    • 0

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

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

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

QEclipseでServlet/JSP

エクリプス2.0.2を使っていますが、Servlet/JSPを使った開発でひとつ疑問があります。
ちなみに、
http://www.atmarkit.co.jp/fjava/rensai2/eclipse03/eclipse03.html
で各種設定いたしました。
JSPを作成するのは問題ないのですが、
Servletのクラスを作るときに、新規→クラスで、ソースフォルダがプロジェクト名か、j2srcのどちらかしか選択できません。コンパイルして、そのクラスをclassesに移動してやりましたが、それを実行するときに、
http://localhost:8080/myWeb/servlet/Hello
とすると、Helloクラスをダウンロードするような形になってしまうのです。URLはなんパターンか変えてやってみましたが、できません・・・。
どうすればうまくサーブレットを作って実行できるのでしょうか?
宜しくお願いします。

Aベストアンサー

どんなむちゃくちゃをやったとしても、
/WEB-INF/classes 以下に配置したクラスを
ダウンロードするようなことにはなりません。

ダウンロードが開始されてしまうのは、
環境のせいではなく、もしかしたらプログラム中の
response.setContentType の箇所に誤りがあるから
かもしれません。

そこの一文を見せてもらえませんか?

QjspからServletを呼び、元のjspページに戻るにはどうしたらよいですか?

・jspページにあるボタンを押すとServletに値を渡す。
・Servletで処理をする。
・処理の結果を元のjspページに表示する。

というプログラムを作りたいと考えています。
jspページ→Servletで処理をする、という所までは出来たのですが
その後元のページに戻すというところで困っています。

jspページは複数(十数ページ)あり、Servletは1つです。
a.jsp→Servlet→a.jsp
b.jsp→Servlet→b.jsp
このように、どのjspページから呼ばれても、元のjspページに
戻したいのですが、どのようにすれば実現できるでしょうか?

Aベストアンサー

doGetメソッドなら
import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class サーブレット名 extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
try {
res.sendRedirect(new URI(req.getHeader("referer")).getPath());
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
}
(JDKやサーバーなどの環境、eclipse等を使用しているかなど、詳しく書いたほうがいいですよ^^!ロジック自体はもっといいものがあるかどうか検討してみてください。sendRedirectメソッドはリクエスト属性を保持しないので、必要な場合はRequestDispatcher#forwardメソッドの使用も考えられます。その場合はパスの記述が/アプリ名/ファイル名ではなく/ファイル名 になりますが(余談))

doGetメソッドなら
import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class サーブレット名 extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
try {
res.sendRedirect(new URI(req.getHeader("referer")).getPath());
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
}
(JDKやサーバーなどの環境、eclipse等を使用しているかなど、詳し...続きを読む

QServletからJSPに遷移させた後もServletに制御を戻したいんですが

Java初心者です。宜しくお願いします。
現在、ServletからJSPに対してIncludeまたはForward
した後にServlet側にて処理を継続させる方法が
ないか調べています。
Forwardは×かなというところ
まではわかったのですがIncludeで行った場合
Servlet → JSPに遷移させた後に呼び出し元の
Servletに制御を戻す事は可能でしょうか。
また、一般的な方法がありましたらご教授お願いします。

宜しくお願いします。

Aベストアンサー

なぜそうしたいか?
というのがわからないので、適切な回答になっているか分かりませんが、

サーブレット
リクエストを受け取る

(継続させたい)処理を行う

JSPを返す

となっているんですよね?(今は)

サーブレット         スレッド
リクエストを受け取る

スレッドを生成して開始させる→処理を行う
↓              ↓
JSPを返す         処理を継続して行う

とすれば、サーブレットはスレッドを起動・開始すればすぐ処理が戻ってきますので、JSPを返した後も処理が継続できるのでは?

ただし、サーバーのリソースなどを考慮して下さいね。

QJava Servlet/JSPはJavaから?

Java Servlet/JSPを覚えるならやはり最初はJavaからやるものだと聴いたのですが、やはりその通りなのでしょうか。
素人でまったくプログラミングに手を出した事がなく、難しい事は重々承知しています。それでもやりたいと思っています。
そこで、初心者向けの書籍やサイト等で参考になるものがあれば教えていただけませんでしょうか。
よろしくおねがいします。

Aベストアンサー

優良サイトをご紹介します。
『JavaでHellow World』
http://www.hellohiro.com/
のサーブレット編やJSP編を参考にプログラムを組んでみたらどうですか??
Javaの基本的なことを独習するなら
『javaの道(Java入門・リファレンス)』
http://www.javaroad.jp/

この2つサイト基本的なことは学べます。

頑張ってください。

QJSP/Servletの学習方法について

IT業界に入って1年目の社会人です。現在、実務で使用するJSP/Servletを学習してます。入門書に書かれていることを一通り理解して、サンプルプログラムも動かしてみました。でも、当たり前ですが今のレベルじゃとても実務で使えそうにありません。こんな私が実務レベルでJSP/Servletを使えるようになるにはどうしたらいいのでしょうか?効果的な学習方法、書籍、サイト等がありましたら教えてください。

Aベストアンサー

JSP/Servletを実務で使おう、という会社なら大半はStrutsのようなフレームワークや、Sprint, Seesar2のようなDIコンテナを使うはずです。
#自社オリジナル、あるいは他の有料フレームワークという可能性も。

殆どの場合、JSP, HTML, CSSの知識は役に立ちますし、即戦力になりますので、まずはそこから手をつけて下さい。
・JSPで、taglibが使えたり、JavaBeanの参照をきちんと書ける
・HTMLで、きちんとFORMタグを書いて、Strutsに自分が考えたとおりの(ActionFormで定義されている通りの)データが送れる
・CSSを使って、HTMLに望み通りのデザインを適用できる
・余裕があり、かつ会社が必要としているなら、JSF等も覚える。あるいはAJAXについて知っておく。

さらにJavaScriptが使えたり、AJAXができれば尚良いですが、入社したばかりの新人ならまず「ちゃんと業務用の画面が作れる」のが一番でしょう。

J2EEの世界は広すぎるので、一度に手をつけようと思っても無理です。

JSP/Servletを実務で使おう、という会社なら大半はStrutsのようなフレームワークや、Sprint, Seesar2のようなDIコンテナを使うはずです。
#自社オリジナル、あるいは他の有料フレームワークという可能性も。

殆どの場合、JSP, HTML, CSSの知識は役に立ちますし、即戦力になりますので、まずはそこから手をつけて下さい。
・JSPで、taglibが使えたり、JavaBeanの参照をきちんと書ける
・HTMLで、きちんとFORMタグを書いて、Strutsに自分が考えたとおりの(ActionFormで定義されている通りの)データが送れる...続きを読む


人気Q&Aランキング

おすすめ情報