Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(jspのextendsのバグ?)
閲覧数:1066
掲示板(jspのextendsのバグ?)
名前
匿名
題名 jspのextendsのバグ?
質問内容

質問を評価する
(0ポイント)
javac 1.7.0_09
tomcat 7.0.4
windowsXP
以下のJSPファイル(test.jsp)を実行しようとすると
An error occurred at line: 7 in the generated java file The import hoge cannot be resolved
というエラーが発生します。
以下test.jsp
<%@page import="hoge.hoge" %>
<%@page extends="hoge" %>

<%
    out.println("test");
%>
以上
7行目でエラー発生してるのでJSPをJAVAに展開している
test_jsp.javaを見ると

以下test_jsp.java
package org.apache.jsp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import hoge.hoge;
import hoge;

public final class test_jsp extends hoge
    implements org.apache.jasper.runtime.JspSourceDependent {
以下略
以上

となり7行目にimport hoge;という文を挿入しています。
これにはpackageが指定されていないためエラーとなることがわかりました。
これはtomcatのバグでしょうか?
質問日時 2013-03-09 15:47:33
名前
匿名
回答内容

回答を評価する
(0ポイント)
いきなり他人の作ったもののバグを疑うようじゃまだまだだ
な。
うまく行かないときは、まずは自分の使い方が悪いことを考
えるべきだ。
つまりこの場合、「そういう仕様なんじゃないか」から話を
始めるんだよ。
回答日時 2013-03-09 19:22:57
名前
回答内容

回答を評価する
(0ポイント)
申し訳ありませんでした。
ではこの問題の回避策があったらお教え願えないでしょうか?
回答日時 2013-03-10 14:51:57
名前
匿名
回答内容

回答を評価する
(0ポイント)
>これにはpackageが指定されていないためエラーとなること
がわかりました。
既に自分で書いてる。
回答日時 2013-03-10 20:00:01
名前
匿名
回答内容

回答を評価する
(0ポイント)
JSPが勝手にpackageを指定しないimport hoge;という
文を挿入していることが問題なのです。
回答日時 2013-03-11 07:28:48
名前
匿名
回答内容

回答を評価する
(10ポイント)
pageディレクティブのextends属性はめったに使わないので、
知りませんでしたが仕様を当たってみるとFQCNで指定しろとの
ことですが。

http://www.infosun.fim.uni-passau.de/br/lehrstuhl/Kurse/sep_ws0405/doc/jsp-1_2-fcs-spec.pdf
のP.49辺り

バグじゃないのでは?
回答日時 2013-03-11 12:58:17
名前
匿名
回答内容

回答を評価する
(0ポイント)
要求に従った書き方してないのに、期待通りにならないのを
バグ扱いするのが、もう。
回答日時 2013-03-11 21:22:25
名前
匿名
回答内容

回答を評価する
(0ポイント)
<%@page extends="hoge.hoge2" %>
で試したらうまくいきました。
ただし展開したファイルtest_jsp.javaですでにextends
を指定しない場合に
public final class test_jsp extends org.apache.jasper.runtime.HttpJspBaseとなっていますし、またextendsを指定すると
public final class test_jsp extends hoge.hoge2
となってしまいます。
JAVAは基本的に多重継承が出来ない様なのでhoge2クラスが
org.apache.jasper.runtime.HttpJspBase
のサブクラスにする必要があるようです。

以上 ご回答いただいた面々にはありがとうございました。
回答日時 2013-03-13 10:58:45

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



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道