Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

HTMLファイルからJSPファイルへ、、

JSPファイルを作成していて、自分で作成したjavaプログラムをimportしたいのですが、上手くいきません。
<%@ page import="java.util.*" %>のように

<%@ page import="javaパッケージ名.*" %> 

とJSPファイルには書いたのですが、以下のように

説明 The server encountered an internal error () that prevented it from fulfilling this request.

例外 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません

「パッケージは存在しません」

とエラーが出ます。
書き方が間違っているのでしょうか?
分かる方が居られたらご教授お願いします。

15

回答

5680

閲覧

15件の回答

評価

0

classpathが足りないんでしょう。

評価

0

早速のお返事ありがとうございます。

ユーザー環境変数のクラスパスは
C:\j2sdkee1.2.1\lib\j2ee.jar;C:\jdk1.3.0_02\lib\tools.jar;C:\j2sdk1.4.2_11\bin;

システム環境変数は
.;C:\bea\weblogic700\server\lib\weblogic_sp.jar;C:\bea\weblogic700\server\lib\weblogic.jar;C:\ant1.5.1\lib\xercesImpl.jar

です。tomcatのインストールをする時に散々見たつもりですが、何が足りないのでしょうか。このような質問までしてすみませんが何卒お願いいたします。
実行環境は
j2sdk1.4.2_11
tomcat5.0.28
です。

評価

0

その、「自分で作成したjavaプログラム」はどこに入っていますか。

評価

0

C:\Documents and Settings\workspace\Training\jp\co\soft\Fib
です。

評価

0

だから、tomcatがそこが見つけられなければ、コンパイルできないでしょう、ということです。

評価

0

申し訳ありませんが意味がよくわからないのでもう少し詳しくご説明願えますか。

評価

0

Javaがクラスをコンパイルするためには、そこで使われているすべてのクラスの、ありかが分かっていなければならないという、Javaの基本です。
これは理解していますか?

tomcatがJSPをクラスへとコンパイルするときにも、同じことが言えます。
大抵は、classpathをわざわざ増やさないでも良いように、classなどをwebapps配下に置きます。

評価

0

先程mioさんに言われた事を調べ、考えて、今言われているようにwebapps配下に置いた状態まではしました。
ですが、実行結果は以下のように出ます。

説明 The server encountered an internal error () that prevented it from fulfilling this request.

例外 

org.apache.jasper.JasperException: JSPのクラスをコンパイルできません

生成されたサーブレットのエラーです:
C:\Tomcat 5.0\work\Catalina\localhost\jsp-examples\org\apache\jsp\jsp2\jspx\Fibonacci\Answer_005fYam_jsp.java:6: パッケージ jp.co.soft.Fib は存在しません。
import jp.co.soft.Fib.*;
^
エラー 1 個



    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:332)
    org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:412)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


それと、もう一度過去ログを見渡してみて、javaのヴァージョンについて書かれていたのでそれも調べてみましたら、

C:\Documents and Settings\*****>javac -J-version
java version "1.3.1_03"
java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_03-b03)
java HotSpot(TM) Client VM (build 1.3.1_03-b03, mixed mode)

C:\Documents and Settings\*****>java -version
java version "1.3.1_03"
java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_03-b03)
java HotSpot(TM) Client VM (build 1.3.1_03-b03, mixed mode)

と出ました。
自分ではj2sdk1.4.2_11のヴァージョンを使っていたつもりなのですが。。これはおかしいですか?

評価

0

htmlファイルの方もJSPファイルと同じwebapps配下の同フォルダ内に置いたら、htmlからJSPへと切り替わるようにはなりました。
ですがブラウザからのhttp://localhost:8080/.....で表示しようとすると、やはり今までと同じエラーが出るのは何故でしょうか?

評価

0

>ですが、実行結果は以下のように出ます。
パッケージは違っても、先ほどと同じエラーです。つまり解決するための方法も同じです。

>自分ではj2sdk1.4.2_11のヴァージョンを使っていたつもりなのですが。。これはおかしいですか?
おかしいですね。
きちんとpathを設定していないということになります。
classpathの設定を見るに、おそらくj2eeのバージョンが古いのでしょう。

>htmlファイルの方もJSPファイルと同じwebapps配下の同フォルダ内に置いたら、htmlからJSPへと切り替わるようにはなりました。
htmlの置き場は、jspのコンパイルエラーにはなんら関係しません。
結果が違うとすれば、htmlから遷移した場合のURLと、直接打ち込んだURLとが、違うということが考えられます。

評価

0

取り合えずmioさんの仰るようにpathの設定のし直しと、j2sdkの1.4.2_12をインストールし直してみました。そうしたら、

C:\Documents and Settings\*****>javac -J-version
java version "1.4.2_12"
java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_12-b03)
java HotSpot(TM) Client VM (build 1.4.2_12-b03, mixed mode)

C:\Documents and Settings\*****>java -version
java version "1.3.1_03"
java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_03-b03)
java HotSpot(TM) Client VM (build 1.3.1_03-b03, mixed mode)

になりました。片方だけしか変わらないのはまだpathの設定がおかしいのでしょうか?

評価

0

そうですね。それが考えられます。

評価

0

チョット見てもらってもよろしいでしょうか。

ユーザー環境変数
CLASSPATH C:\j2sdkee1.2.1\lib\j2ee.jar;C:\j2sdk1.4.2_12\bin;

システム環境変数
path C:\PROGRA~1\RATIONAL\RATION~1\NUTCROOT\bin;C:\PROGRA~1\RATIONAL\RATION~1\NUTCROOT\bin\x11;C:\PROGRA~1\RATIONAL\RATION~1\NUTCROOT\mksnt;C:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;%SYSTEMROOT%\SYSTEM32;%SYSTEMROOT%;%SYSTEMROOT%\SYSTEM32\WBEM;C:\DMI\WIN32\BIN;C:\ant1.5.1\bin;C:\bea\weblogic700\server\bin\oci920_8;C:\Program Files\Rational\common;C:\Program Files\Rational\Rose\TopLink;C:\Program Files\Rational\Rational Test;C:\Program Files\cvsnt;C:\j2sdk1.4.2_12\bin

なのですが。。。
何度も見たのですが問題点が分かりません。これはおかしいでしょうか?

評価

0

pathやclasspathがどういうものか、理解していますか?
pathもclasspathも、;で区切って頭から順番に、ファイルの存在を調べにいきます。
どこか途中で見つかった場合、そこから後ろのパスは見に行きません。
なので、ふつう必ず使いたいものは先頭に指定します。

今回の場合、java.exeが

C:\Program Files\Oracle\jre\1.3.1\bin;

の中にある(と思われる)ので、一番最後に指定したC:\j2sdk1.4.2_12\bin;へ到達していません。

評価

0

理解出来ていませんでした。申し訳ありません。
そして丁寧なご説明ありがとうございます。
mioさんの仰る通り C:\Program Files\Oracle\jre\1.3.1\bin; があったので削除したらチャント両方とも1.4.2のヴァージョンになりました!

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。