java.lang.InstantiationException:在作用域内找不到bean [name]

时间:2013-07-24 19:14:14

标签: java jsp javabeans

我正在学习如何使用jsp和bean,并且无法理解我遇到的问题。

我正在尝试创建一个这样的bean: ...

我收到了错误:

java.lang.InstantiationException:在范围

中找不到bean保留

我在网上浏览过,大多数人似乎建议使用class =“...”而不是type =“...”,或者使用import语句。我已经做了前者并尝试了后者......任何想法?

这是豆子:

package homework10;

public class Reservation {

private int groupSize;
private String status;
private double cost;
private boolean triedAndFailed;

public Reservation(){      
}

public void setGroupSize(int gs)
{
    groupSize = gs;
}

public int getGroupSize()
{
    return groupSize;
}
public void setStatus(String str)
{
    this.status = str;
}

public String getStatus()
{
    return status;
}    

public void setCost(double cost)
{
    this.cost = cost;
}

public double getCost()
{
    return cost;
} 

public void setTriedAndFailed(boolean bool)
{
    this.triedAndFailed = bool;
}

public boolean isTriedAndFailed()
{
    return triedAndFailed;
}    

}

这是jsp页面的开头:

<head>
    <!--<script type="text/javascript" src="functions8.js">
    </script>-->
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>BHC Calculator-HTML-validation + Servlet Version</title>
    <jsp:useBean id = "reservation" class = "homework10.Reservation" scope = "session" />
</head>

提前致谢!

1 个答案:

答案 0 :(得分:5)

  

java.lang.InstantiationException

这基本上用普通的Java术语表示以下构造

import homework10.Reservation;

// ...

Reservation reservation = new Reservation(); 

失败了。

有很多可能的原因:

  1. 运行时类路径中缺少类。
  2. 无法找到类定义。
  3. 班级不公开。
  4. 类没有公共默认构造函数。
  5. 公共默认构造函数中的代码引发了异常。
  6. 根据目前为止提供的代码,并假设您100%确定您正在运行您认为正在运行的代码,那么这只会导致#1或#2。该类是公共的,并且有一个公共默认构造函数,它基本上什么也没做。所以#3,#4和#5都可以划伤。

    要修复可能的原因#1,请确保路径
    中的webapp部署中存在类文件 /WEB-INF/classes/homework10/Reservation.class。为了解决可能的原因#2,您还应该确保在保留包结构的同时以正确的方式编译类。所以,当你没有使用像Eclipse那样的IDE,但是你在命令提示符下摆弄低级别时,那么你应该确保在编译类时包含该包。


    关于您找到的可能解决方案,

      

    并且大多数人似乎建议使用class =“...”而不是type =“...”

    这是对的。要了解更多信息,请转到这个答案:javax.servlet.ServletException: bean [name] not found within scope但是,这显然不是您特定情况下的原因,因为它显然无法解决问题。

      

    或使用导入声明

    这没有任何意义。那些人对 scriptlet 感到困惑。他们应该avoided到所有程度。实际上<jsp:useBean>也是如此,但这是一个不同的故事。另请参阅our Servlets wiki page以获取一些提示。