• ベストアンサー

JSPでclassのimport

教えてください。 JSPのプロジェクトで、自作のクラスを下記のようにimportしています。 import Util; しかし、次のようなエラーメッセージが表示されてしまい、うまくいきません。 > '.' がありません。 > import Util; > ^ Util.class というファイルは存在していて、その場所にはCLASSPATHが通っています。 その場所にフォルダをもう一つ作って、その中にUtil.classを移動し、次のように import test.Util; などとすると、認識自体はできたらしく次のようなメッセージに変わります。 > test.Util にアクセスできません。 > クラスファイル C:\xxx\classes\WspBean\Util.class は不正です。 > クラスファイル Util に不正なクラスがあります。 > 削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。 > import WspBean.Util; > ^ なので、CLASSPATH もとおっていると思うのですが・・ 何か原因らしきものや、ほかに調査できる方法などありますでしょうか? ヒントになるようなことでもいいので、教えていただけると幸いです。 よろしくお願いいたします。

  • Java
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • nori1976
  • ベストアンサー率60% (3/5)
回答No.2

おそらく原因は、j2SE1.4 における非互換性が原因ではないでしょうか? 以下 j2se1.4 変更点抜粋 ---------------- コンパイラは、名前のないネームスペースから型をインポートする import 文を拒否するように なりました。以前のバージョンのコンパイラは、こうした import 宣言を、理論的には言語で許可 されていなくても (import 句に現れる型名がスコープ内に存在しないため)、 受け入れていまし た。仕様の中では、import 文の中に単純名を含めることはできないこと、また名前のないネー ムスペースからインポートを行うことはできないことが明示されています。 要約すると、次の構文は有効ではなくなりました。 import SimpleName; また、名前のないネームスペースからネストしたクラスをインポートする次の文も、有効ではなく なりました。 import ClassInUnnamedNamespace.Nested; コード内でこうした問題を修正するには、すべてのクラスを、名前のないネームスペースから名 前付きのネームスペースへ移動する必要があります。

参考URL:
http://java.sun.com/j2se/1.4/ja/compatibility.html
seltzer
質問者

お礼

回答ありがとうございます。 まさにそのとおりで、バージョンを落としてみたらうまくいきました。 確かに導入指示書にも、JDK1.3xと書いてありました・・・ 新しいバージョンの方がよいかと思ったのですが、そうでもないこともあるんですね。とほほ・・ 大変助かりました、ありがとうございました!

その他の回答 (1)

noname#16216
noname#16216
回答No.1

クラスパスが通っている場所は? c:\xxx\classes?c:\xxx\classes\WspBean? Utilクラスが置かれているディレクトリは? Util.javaでpackageを指定していない状況ですか? それとも何か記述していますか? JSPファイル内でimport文はどのように記述していますか?

seltzer
質問者

補足

回答ありがとうございます。早速、補足させていただきますね。 > クラスパスが通っている場所は? > c:\xxx\classes?c:\xxx\classes\WspBean? c:\program files\apache group\tomcat 4.1\webapps\xxx\xxx\xxx\classes になります。実際、Util.classもこのフォルダにあります。 ただ、それ以外にも ZIPファイルやらいろいろなものに CLASSPATH が通っています。 > Utilクラスが置かれているディレクトリは? 上記のとおりのフォルダです。 > Util.javaでpackageを指定していない状況ですか? > それとも何か記述していますか? 実は、Util.class自体は私自身が作ったわけではなく、.javaファイルもございません。ただ、その導入指示書には確かに上記のフォルダに格納しろと書いてあります。 > JSPファイル内でimport文はどのように記述していますか? <%@ page import="java.util.*,Util,WspBean.*,java.text.*,java.sql.*" %> といった具合です。二番目の Util のところで、エラーが発生しております。 何かヒントとなることでもかまいませんので、教えていただければ幸いです。

関連するQ&A

  • JSPで独自のパッケージがimportできません。

    下記構成で、test.jspで、作成したjp.test.utilパッケージをimportして使いたいのですがうまくいきません。 ■Tomcat4.1 |_■webapps  |_■test   | ■JSP   | |★test.jsp   |   |_■Web-inf     |_■classes      |_■jp       |_■test        |_■util         |★OrgDataFormat.class ★test.jspに、 <%@ page import="jp.test.*" %> と記述しても、下記エラーとなりimportできません。 パッケージ jp.test は存在しません。 import jp.test.*; オリジナルパッケージをimportするには、 どこにどのような設定が必要なのでしょうか? 環境はWinXP,Tomcat4.1.18,JDK1.4.1を使っています。

    • ベストアンサー
    • Java
  • JSPにおけるimportのパス?

    =========================== ■jakarta-tomcat-3.2.4 |_■webapps   |_■login     |_■bookmark     | |_□list.jsp ← 其の2     | |_■Web-inf     |   |_■classes     |   |_■atmakit     |     |_□MyDBAccess.class ← 其の3     |     |_□MyUtil.class ← 其の4     |_■Web-inf       |_■classes         |_□Servlet.class ← 其の1 =========================== 上記のようなディレクトリ構造のwebアプリケーションを作成中です。 其の1(Servlet.class)から其の2(list.jsp)を呼び出し、 その中で其の3(MyDBAccess.class)と其の4(MyUtil.class)をimportしたいのですが、 その場合の其の2(list.jsp)でのimportのパスはどのように指定したら良いのでしょうか? そもそもそんなこと可能なのでしょうか? 現在 import="java.sql.* ,atmarkit.MyDBAccess ,atmarkit.MyUtil" としてありますが、 ----------------------- org.apache.jasper.JasperException: Unable to compile class for JSPE:\jakarta-tomcat-3.2.4\work\localhost_8080%2Flogin\_0002fbookmark_0002flist_0002ejsplist_jsp_0.java:16: クラス atmarkit.MyDBAccess が import に見つかりません。 import atmarkit.MyDBAccess ; ^ E:\jakarta-tomcat-3.2.4\work\localhost_8080%2Flogin\_0002fbookmark_0002flist_0002ejsplist_jsp_0.java:17: クラス atmarkit.MyUtil が import に見つかりません。 import atmarkit.MyUtil; ^ ----------------------- というエラーが発生します。 これだけでは分からないかも知れませんが、必要な情報があれば仰ってください。 分かりにくい質問で申し訳ないですが、どなたかご教授下さい。

  • java import文のエラー

    javaのソースで、パッケージをimportして使用するための簡単なサンプルを作成しました。 import文でクラス名まで指定すれば問題ないのですが、*を利用するとコンパイルエラーとなってしまいます。 コンパイル時にクラスパスを指定するのかと思って試してみましたが、やはりエラーでした。 回避方法をご存知の方いらっしゃいましたら、教えていただけますでしょうか。 なお、java/javacは、1.5.0_14を使用しています。 ■ソースコード(1) <C:\Work\Test\PackTest.java> package Test; public class PackTest{   public static void methodA(){     System.out.println("パッケージ成功");   } } ■ソースコード(2) <C:\Work\UsePack.java> import Test.*;     //import Test.PackTest; なら成功 class UsePack{   public static void main(String args[]){     PackTest.methodA();   } } ■エラー例(1) >javac -d . PackTest.java (これは成功) >javac UsePack.java   UsePack.java:5: PackTest にアクセスできません。   クラスファイル .\PackTest.java は不正です。   ファイルにクラス PackTest が含まれていません。   削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。     PackTest.methodA(); ■エラー例(2) >javac -d . PackTest.java (これは成功) >javac -classpath C:\Work\Test UsePack.java   UsePack.java:1: パッケージ Test は存在しません。   import Test.*;   ^   UsePack.java:5: PackTest にアクセスできません。   クラスファイル C:\Work\Test\PackTest.class は不正です。   クラスファイル Test.PackTest に不正なクラスがあります。   削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。      PackTest.methodA();      ^

  • JSPでインポート

    WEB-INF \ classes \ abc \ def \ghi.java jsp \ hoge.jsp WEB-INFとjspは同じ場所にあります。 jspファイルにimportを記述して上のabc.def.*のパッケージをインポートしたいのですが、 <% page import = "abc.def.*" %> と入れても、「パッケージがありません」というエラーになってしまいました。 (eclipseの左側の×しるし) おそらくパッケージがどこから始まっているのか、という情報(どこにあるのか??) を与えてやら無いといけないとは思うのですが、それがどこなのか良くわかりません。 実はもともともwarアーカイブがあり、それを一気に配備すればエラーは出ません。 どのように構築して行ったのかを勉強しようとしたところ、このような壁にあたってしまったのです。 どこにどう書けばよいかを教えてください。

    • ベストアンサー
    • Java
  • JSPでImportエラーになります

    技術サイトを見ながらJSPを勉強しているのですが、 自作のクラスがimportエラーとなる為、コンパイルできない状態です。 色々サイトを検索して調べてみましたが、原因が分からず悩んでいます。 ご教示を宜しくお願いします。 ※下記、[参考資料]ページを見ながら勉強していますが、 原因を調べる為にimportだけの簡単のjsp(test.jsp)を 作成してデバッグ中です。 Windows2000 Apache 2.0.63 Tomcat 6.0.16 JK2 2.0.4 参考資料:http://www.atmarkit.co.jp/fjava/rensai/jsp06/jsp06.html ----------------------------------------------------------------------------- ■エラー内容(ブラウザの表示結果) org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: An error occurred at line: 6 in the generated java file Only a type can be imported. atmarkit.CopyrightHTML resolves to a package ■ファイルの配置 $docbase →test.jspを配置 $docbase\WEB-INF\classes\atmarkit →CopyrightHTML.classを配置 $docbase\WEB-INF\lib ■test.jsp <%@ page contentType="text/html; charset=SHIFT_JIS" %> <%@ page import="atmarkit.CopyrightHTML" %> <html> <body> <p>-- テスト --</p> </body> </html> ■CopyrightHTML.java package atmarkit; /** * 著作権表示用のHTMLを生成するクラス */ public class CopyrightHTML { public String year = ""; public String name = ""; public String mail = ""; // 標準的な著作権表示HTML文を取得する public String getNormalHTML() { if(!mail.equals("")) { name = " <a href=\"mailto:" + mail + "\">" + name + "</a>"; } return "Copyright " + year + " " + name + ". All rights reserved."; } // 短い著作権表示HTML文を取得する public String getShortHTML() { if(!mail.equals("")) { name = " <a href=\"mailto:" + mail + "\">" + name + "</a>"; } return "(C) " + year + " " + name + "."; } }

  • JavaBeans が使用出来ない

    Tomcat と Apache を連携させています。 参考書どおりに、jsp:useBeans タグを利用したJSPファイルを書き、クラスファイルを書きましたが、 //////////////////////////// /usr/local/tomcat/work/Standalone/localhost/test/jsp/sample_jsp.java:7'.'がありません。 import samplebeans; エラー1 //////////////////////////// と表示されてしまいます。 サーブレットに変換されたファイルを見てみると、 import samplebeans; となっており、そこが原因みたいです。 WEB-INF/classes にクラスファイルを置いてあるのですが、上手くいきません。 サーブレットに変換されたあとに、コンテナが WEB-INF/classes ファイルをうまくimport できるように CLASSPATH を張ってくれていればできると思うのですが、どうすればいいのでしょうか? 簡単な設定ミスをしているのかもしれませんが、 ご教授してもらえればうれしいです。 どうか宜しくお願い致します。

    • ベストアンサー
    • Java
  • jspからjarを参照したいのですが

    /usr/local/tomcat/webapps/jsp-examples/の下にあるjspから jarを参照したいのですが、上手くいきません。 /usr/local/tomcat/webapps/jsp-examples/WEB-INF/classes/testPkgの 下にそのままクラスを置けば参照できます。 クラスには次のように宣言してありますし package jalanClass; jspの先頭でパッケージをインポートしてあります。 /usr/local/tomcat/webapps/jsp-examples/WEB-INF/classes上で jar cvf testPkg.jar testPkg jar cvf testPkg.jar testPkg/* などとして作ったjarを /usr/local/tomcat/webapps/jsp-examples/WEB-INF/classesに置いたのですが、NoClassDefFound エラーとなってしまいます。 CLASSPATHに/usr/local/tomcat/webapps/jsp-examples/WEB-NF/classes を通してみましたが駄目でした。 jarは今まで使った事がないので、根本的な事が分かっていないのかも知れませんが、教えてください。 宜しくお願いします。

    • ベストアンサー
    • Java
  • クラスにアクセスできません。

    いつもお世話になっております。 ・windows2000 ・j2sdk-1_4_1_07-windows-i586 ・jakarta-tomcat-4.1.31 で、 Daykeisan.java というのを作成し、コンパイル後 作成されたclassファイルを c:\Plogram Files\Apache Group\Tomcat4.1\webapps\examples\WEB-INF\classes\javahello に格納しました。 <%@ page contentType="text/html;charset=Shift_JIS" %> <%@ page language="java" %> <%@ page import="java.util.*" %> <jsp:useBean id="syuu" class="javahello.Daykeisan" />           ・             ・           ・ とjspファイルを作成し、表示させようとすると、 HTTP Status 500 - C:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\examples\javahello\calendar2_jsp.java:45: javahello.Daykeisan にアクセスできません。 クラスファイル C:\Program Files\Apache Group\Tomcat 4.1\webapps\examples\WEB-INF\classes\javahello\Daykeisan.class は不正です。 クラスファイル Daykeisan に不正なクラスがあります。 削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。 javahello.Daykeisan syuu = null; ^ エラー 1 個 とエラーがかえってきます。 <jsp:useBean・・・> の使い方がよくないのだろうと思い調べていますが、解決に結びつきません。 どなたかご教授お願いいたします。

    • ベストアンサー
    • Java
  • EclipseでJSPのコンパイルエラー

    過去に開発したWebアプリをEclipseを使用して再開発し直してみようと挑戦中ですが、以下のエラーが解決できず困っています。 ***** org.apache.jasper.JasperException: JSPのクラスをコンパイルできません JSPファイル: null の中の行: -1でエラーが発生しました 生成されたサーブレットのエラーです: [javac] Compiling 1 source file E:\AddProgram\Eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Standalone\localhost\XXX\login_jsp.java:10: java.lang.Object にアクセスできません。 クラスファイル E:\AddProgram\Eclipse\eclipse\jre\lib\rt.jar(java/lang/Object.class) は不正です。 クラスファイルのバージョン 49.0 は不正です。48.0 であるべきです。 削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。 public class login_jsp extends HttpJspBase { ^ エラー 1 個 ***** Javaビルドパス-クラスパス変数は j2sdk1.4.2\jre\lib\rt.jarになっているし、 Javaコンパイラーの準拠レベルは1.4になっているし、 JAVA_HOMEやPATHもj2sdk1.4.2、j2sdk1.4.2\binになっているんですが、何故別のjarを参照してしまっているのでしょうか? Eclipseの再起動、JRE1.4.2の再インストールなども試みましたが、解決せず悩んでいます。解決方法をご存知の方、ご教授ください。 ■環境(最終的に落ち着いた使用バージョンは以下の通り。) ・EclipsePleiadesAllinOneJava3_4_2 ・java 1.4.2 ・Tomcat 4.1.31 ・Apache 2.0.53 ・MySQL 4.0.25

    • ベストアンサー
    • Java
  • Tomcat内のJSPファイルを削除したい

    事情がありにTomcat内のフォルダを 見せなければならなくなりました。 他人にTomcat内のファルダにあるサーブレット(+Beans等のクラスファイル)と JSPのソースを見られない様にしたいです。 またその上で実行も可能にしたいのですがどうすればいいでしょうか? サーブレット等は Tomcat 7.0/webapps/MyWebSite/WEB-INF/classes以下の クラスファイル(.class)だけを残してJavaファイル(.java)を削除 するか、Eclipseでソースをエクスポートさせない様にすると Javaのソースは見れなくなると思いますが、 JSPの場合だと Tomcat 7.0/webapps/MyWebSite/以下の JSPファイル(.jsp)を削除して、 Tomcat 7.0/work/ 以下にあるJSPをサーブレットに変換後 コンパイルされたファイル(.class)を残すだけではダメな様です。 他に方法はあるでしょうか? サーブレットのソースを見られないだけでも良しと考えるべきでしょうか?

    • ベストアンサー
    • Java

専門家に質問してみよう