java.lang.InstantiationException:在范围内找不到bean[name]

java.lang.InstantiationException:在范围内找不到bean[name],java,jsp,javabeans,Java,Jsp,Javabeans,我现在正在学习如何使用jsp和beans,但不明白我遇到了什么问题 我正在尝试创建一个如下的bean: ... 我得到了一个错误: java.lang.InstanceionException:在范围内找不到bean保留 我在网上浏览过,大多数人似乎建议使用class=“…”而不是type=“…”,或者使用import语句。我已经在做前者,并尝试了后者……有什么想法吗 这是bean: package homework10; public class Reservation { privat

我现在正在学习如何使用jsp和beans,但不明白我遇到了什么问题

我正在尝试创建一个如下的bean: ...

我得到了一个错误:

java.lang.InstanceionException:在范围内找不到bean保留

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

这是bean:

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>

BHC计算器HTML验证+Servlet版本
提前谢谢

java.lang.InstanceionException

这基本上意味着在普通Java术语中,以下构造

import homework10.Reservation;

// ...

Reservation reservation = new Reservation(); 
失败了

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

  • 运行时类路径中缺少类
  • 找不到类定义
  • 类不是公共的
  • 类没有公共默认构造函数
  • 公共默认构造函数中的代码引发了异常
  • 根据目前为止提供的代码,假设您100%确定正在运行您认为正在运行的代码,那么这只能是原因1或原因2。该类是公共的,并且有一个基本上不做任何事情的公共默认构造函数。因此,3、4和5可以被划伤

    要修复可能的原因#1,请确保webapp部署中的类文件位于路径
    /WEB-INF/classes/homework10/Reservation.class
    。要修复可能的原因#2,还应确保在保留包结构的同时以正确的方式编译类。因此,当您没有使用像Eclipse这样的IDE,而是在命令提示符中处理低级代码时,您应该确保在编译类时包含该包


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

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

    没错。要了解更多信息,请回答以下问题:然而,这显然不是您特定案例的原因,因为它显然没有解决问题

    或者使用导入语句


    这毫无意义。那些人把Scriptlet弄糊涂了。它们应该在所有程度上都是安全的。实际上,
    也是,但那是另一回事。另请参阅以获取一些提示。

    Type表示Bean类的接口或父类,因此建议将其用作类属性而不是类属性type@Phani:不,你也误解了。请看我答案中的链接。@BalusC Oh..你能告诉我它的来源吗?如果你将它作为类型给出,它将返回异常?@Phani:很多JSP容器都是像Tomcat一样的开源容器。看看你自己。@BalusC最后,我找到了我问题的答案。。在UseBean标记语义的JSP 2.1规范中,提到“应该使用type属性指定一个不能被实例化为JavaBean的Java类型(即一个抽象类、接口或没有公共无参数构造函数的类的Java类型)。”。这是规范,而不是实现。:)谢谢我刚转到netbeans的“文件”选项卡,确实看到“web”文件夹中有web\u INF-->类-->家庭作业10-->保留.class。所以看起来可能是#2,但我使用的是netbeans(根本不通过命令行工作…)。。。所以我还是很困惑。您提到的“假设您100%确定您正在运行您认为正在运行的代码”,这很有趣。我正在通过netbeans中的“运行”按钮运行它……可能有什么问题吗?谢谢,againI不做Netbeans,所以我在给出详细说明方面有点受限。至少,尝试“清理”和“重建”项目、服务器、缓存等。即使关闭/重新打开项目或重新启动整个IDE,也应该确保构建中没有任何脏东西。也就是说,您是否能够创建一个servlet并导入/构造
    保留
    类“通常的Java方式”?如果没有,那么你也得到了一个异常,那么这个异常无疑应该包含更多关于真正问题原因的细节,从而也为解决方案提供了更好的线索。K,我在这个过程中遇到了一些其他问题,修复了它们,现在它工作了!谢谢你的帮助——你的回答很好,很有帮助,你的指导把我推向了正确的方向!