【问题标题】:class cannot be resolved to a type(jsp)类无法解析为类型(jsp)
【发布时间】:2016-06-24 09:33:36
【问题描述】:

我是 jsp 的新手。我在学习 useBean 方法,在

上有一个例子

http://www.studytonight.com/jsp/getproperty-tag.php

向下滚动,你会找到它。

这是我的jsp文件:

<html>
<head>
    <title>Welcome Page</title>
</head>
<jsp:useBean id="person" type="PersonBean" scope="request"/>   <body>
    Hello,  <jsp:getProperty name="person" property="name"/>      </body> </html>

这是我的 PersonBean.java 文件,编译为类文件并放置在 类文件:

import java.io.Serializable;
public class PersonBean implements Serializable
{
 private String name="Hello World";
    public PersonBean()
   {
    this.name="Hello";
   }
   public void setName(String name)
   {
    this.name = name;
   }
   public String getName()
   {
    return name;
   }
}

我收到错误: 在 jsp 文件中的第 5 行发生错误:/hello1.jsp PersonBean 无法解析为类型

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 5 in the jsp file: /hello1.jsp
PersonBean cannot be resolved to a type
2:     <head>
3:         <title>Welcome Page</title>
4:     </head>
5:     <jsp:useBean id="person" type="PersonBean" scope="request"/>
6:   <body>
7:         Hello,  <jsp:getProperty name="person" property="name"/>   
8:   </body>


An error occurred at line: 5 in the jsp file: /hello1.jsp
PersonBean cannot be resolved to a type
2:     <head>
3:         <title>Welcome Page</title>
4:     </head>
5:     <jsp:useBean id="person" type="PersonBean" scope="request"/>
6:   <body>
7:         Hello,  <jsp:getProperty name="person" property="name"/>   
8:   </body>


An error occurred at line: 7 in the jsp file: /hello1.jsp
PersonBean cannot be resolved to a type
4:     </head>
5:     <jsp:useBean id="person" type="PersonBean" scope="request"/>
6:   <body>
7:         Hello,  <jsp:getProperty name="person" property="name"/>   
8:   </body>
9: </html>


An error occurred at line: 7 in the jsp file: /hello1.jsp
PersonBean cannot be resolved to a type
4:     </head>
5:     <jsp:useBean id="person" type="PersonBean" scope="request"/>
6:   <body>
7:         Hello,  <jsp:getProperty name="person" property="name"/>   
8:   </body>
9: </html>


Stacktrace:
  org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
  org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
  org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:490)
  org.apache.jasper.compiler.Compiler.compile(Compiler.java:379)
  org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
  org.apache.jasper.compiler.Compiler.compile(Compiler.java:341)
  org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:662)
  org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:364)
  org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
  org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
  javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
  org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.70 logs.

【问题讨论】:

    标签: java jsp


    【解决方案1】:

    jsp:useBean 动作标签:

    <jsp:useBean id= "instanceName" scope= "page | request | session | application"   
        class= "packageName.className" type= "packageName.className"  
        beanName="packageName.className | <%= expression >" >  
     </jsp:useBean>
    

    1.将PersonBean 类放在一个包中,以便能够在其他类中使用它。默认包中的类对于单独在包中的类是不可见的。

    2.将.class文件放入web-inf/classes

    3.在&lt;jsp:useBean/&gt;声明中指定PersonBean的全限定类名。

    此外 - JVM 查找默认包类的惯例是在“当前”目录中查找。在服务器环境中,您无法控制“当前”目录,因此您必须使用包。

    修改你的代码如下:

    PersonBean.java

    package com.person;
    
    import java.io.Serializable;
    
        public class PersonBean implements Serializable {
    
            private String name="Hello World";
            public PersonBean()
           {
            this.name="Hello";
           }
           public void setName(String name)
           {
            this.name = name;
           }
           public String getName()
           {
            return name;
           }
        }
    

    Person.jsp

    <html>
    <head>
        <title>Welcome Page</title>
    </head>
    <jsp:useBean id="person" class="com.person.PersonBean" scope="request"/>    
     Hello, <jsp:getProperty name="person" property="name"/>  
    </html>
    

    【讨论】:

    • 我不太了解。你能详细解释一下第一点吗?
    • @Karan Thakkar 您在哪个包中添加了PersonBean 类?
    • classes="action.PersonBean"。将 PersonBean.class 文件也放在 WEB-INF/classes 和 WEB-INF/classes/action 中。添加了打包操作;在WEB-INF/classes/action的java文件中编译。
    • @KaranThakkar 检查更新部分修改代码,我希望它应该工作。如果有任何错误,请告诉我。
    • 成功了!谢谢!顺便说一句,你知道为什么它以前不起作用吗?
    猜你喜欢
    • 2013-07-17
    • 1970-01-01
    • 2012-05-27
    • 2012-09-12
    • 2016-08-13
    • 2012-07-17
    • 2011-10-08
    • 2016-05-12
    • 1970-01-01
    相关资源
    最近更新 更多