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

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

0

useBeanのクラス属性の値が無効というエラー

はじめまして、bergと申します。
最近Eclipse3.2(jdk1.5.0_05)+Tomcat5.5.12で勉強をしています。

ファイル名:EditSche.jsp
<%@ page contentType="text/html; charset=Shift_JIS" %>
<jsp:useBean id="userInfo" class="jspa1.UserInfo" scope="session" />
<jsp:useBean id="schedule" class="jspa1.ScheduleInfo" scope="request" />
と記述すると、


致命的: サーブレット Scheduler のServlet.service()が例外を投げました
org.apache.jasper.JasperException: /jspa1/EditSche.jsp(5,0) useBeanのクラス属性 jspa1.ScheduleInfo の値が無効です
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:146)
    at org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1223)
    at org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116)
    at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
    at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
    at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
    at org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
    at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
    at org.apache.jasper.compiler.Generator.generate(Generator.java:3284)
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:189)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at jspa1.Scheduler.dispEditSchedule(Scheduler.java:204)
    at jspa1.Scheduler.doGet(Scheduler.java:65)
    at jspa1.Scheduler.doPost(Scheduler.java:112)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Unknown Source)


というエラーがでてしまいます。

もちろん、ScheduleInfo.javaのファイルはあります。

パッケージも指定いるのですが、エラーがでてしまいます。

自分でも調べたのですが、原因がつかめないのでどうか教えてください。よろしくお願いします。

ScheduleInfo.javaのソースは以下のとおりです。

package jspa1;
public class ScheduleInfo
{
    private long id;
    private String appDate;
    private int startTime, endTime;
    private String title, locate, memo;
    private String ownerID;
    private boolean publicFlag;

    //コンストラクタ
    public ScheduleInfo(
      long newID, String newAppDate, int newStartTime, int newEndTime,
      String newTitle, String newLocate, String newMemo,
      String newOwnerID, boolean newPublicFlag) {
        id = newID;
        appDate = newAppDate;
        startTime = newStartTime;
        endTime = newEndTime;
        title = newTitle;
        locate = newLocate;
        memo = newMemo;
        ownerID = newOwnerID;
        publicFlag = newPublicFlag;
    }

    //各プロパティ取得
    public long getID() {
        return id;
    }
    public String getAppDate() {
        return appDate;
    }
    public int getStartTime() {
        return startTime;
    }
    public int getEndTime() {
        return endTime;
    }
    public String getTitle() {
        return title;
    }
    public String getLocate() {
        return locate;
    }
    public String getMemo() {
        return memo;
    }
    public String getOwnerID() {
        return ownerID;
    }
    public boolean getPublicFlag() {
        return publicFlag;
    }
}

4

回答

95024

閲覧

4件の回答

評価

0

殆どやってないので判らないですけど・・

引数を持つコンストラクタって使えるの?

JavaBeansとかになるのかな?
もう一度よく勉強し直してみるのがいいんじゃないかというような気もする。。

評価

30

まあさんの指摘どおり
useBeanでは、引数のないコンストラクタが呼ばれます。
でもScheduleInfoには、引数付のコンストラクタが定義してあるので
引数なしのコンストラクタは自動的に作成されないためですね。

評価

30

JSP1.2 のときはコンパイルはできました。
JSP2.1 になると同様の例外が発生しました

クラスが生成されていることが前提であれば
<jsp:useBean id="schedule" class="jspa1.ScheduleInfo" scope="request" />

<jsp:useBean id="schedule" type="jspa1.ScheduleInfo" scope="request" />
に変更すれば動くかもしれません
クラスが生成されていないと実行時エラーになると思いますが。

評価

30

Tomcat5.5でサーブレットの勉強をしている者です。
おなじ問題さんの言う通りclassをtypeにしたらコンパイルでき
ました。
ありがとうございました。

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