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

Jo.*_*o.P 4 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;
}    
Run Code Online (Sandbox Code Playgroud)

}

这是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>
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Bal*_*usC 5

java.lang.InstantiationException

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

import homework10.Reservation;

// ...

Reservation reservation = new Reservation(); 
Run Code Online (Sandbox Code Playgroud)

失败了.

造成这种情况的原因有很多:

  1. 运行时类路径中缺少类.
  2. 无法找到类定义.
  3. 上课不公开.
  4. 类没有公共默认构造函数.
  5. 公共默认构造函数中的代码引发了异常.

基于到目前为止提供的代码,假设您100%确定您正在运行您认为正在运行的代码,那么这只会导致#1或#2.该类是公共的,并且有一个公共默认构造函数,它基本上什么也没做.所以#3,#4和#5可能会被划伤.

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


至于你找到的可能的解决方案,

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

那是对的.要了解更多信息,请转到以下答案:javax.servlet.ServletException:在范围内找不到bean [name]但是,这显然不是您特定情况下的原因,因为它显然没有解决问题.

或使用import语句

这没有任何意义.这些人对scriptlet感到困惑.应该在一定程度上避免它们.该<jsp:useBean>还,实际上,但是这是一个不同的故事.有关一些提示,另请参阅我们的Servlets维基页面.