Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 5359
  • Last Modified:

cannot be resolved to a type

Hi all

I have a jsp with a basic import statement at top:

<%@ page import="LoginBean"%>
<jsp:useBean id="loginBean" scope="session" class="LoginBean"/>

This class definately exists.

I can't figure out why tomcat returns the following error when I try to access that page:


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

Generated servlet error:
The import LoginBean cannot be resolved

An error occurred at line: 2 in the jsp file: /loginPage.jsp
Generated servlet error:
LoginBean cannot be resolved to a type


If I remove the import statement, the problem goes away

Any help appreciated.

Phil
0
pmccar06
Asked:
pmccar06
  • 3
  • 2
  • 2
  • +3
2 Solutions
 
girionisCommented:
Check to see if the LoginBean is in a package. if it is provide the fully qualified name of the package.
0
 
CEHJCommented:
Your class should normally be in a package
0
 
objectsCommented:
your class *must* be in a package
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
objectsCommented:
add a package statement to your class
move it to a directory that matches the package name
and include the package in the import
0
 
mukundha_expertCommented:
class="packagename.LoginBean"
0
 
mukundha_expertCommented:
even if the class is imported, fully qualified name is required in jsp:useBean tag
0
 
Mayank SAssociate Director - Product EngineeringCommented:
0
 
pmccar06Author Commented:
Hi guys

You have got me on the track, but I still have issues.  I created a folder called 'com' in the 'classes' folder for my application, and in the 'com' folder I placed another folder 'mypackage' in which I placed LoginBean.

LoginBean compiles ok as does my controller servlet that sets it.

Here is my bean:

package com.mypackage;

public class LoginBean
{
    // attributes
    String enteredUsername, enteredPassword, authenticatedUsername, message;

    // constructor method
    public LoginBean()
    {    
        enteredUsername = "";
        enteredPassword = "";
        authenticatedUsername = null;
        message = "";
    }

    // methods
    public void setEnteredUsername(String enteredUsername)
    {
        this.enteredUsername = enteredUsername;
    }
   
    public void setEnteredPassword (String enteredPassword)
    {
        this.enteredPassword = enteredPassword;
    }
   
    public void setAuthenticatedUsername (String authenticatedUsername)
    {
        this.authenticatedUsername = authenticatedUsername;
    }
   
    public void setMessage (String message)
    {
        this.message = message;
    }
   
    public String getEnteredUsername()
    {
        return enteredUsername;
    }
   
    public String getEnteredPassword()
    {
        return enteredPassword;
    }
   
    public String getAuthenticatedUsername()
    {
        return authenticatedUsername;
    }
   
    public String getMessage()
    {
        return message;
    }
}


Here is my servlet that sets this bean and calls the jsp

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import com.mypackage.*;

 
public class LoginHandler extends HttpServlet
{
   public void doGet
      (HttpServletRequest req, HttpServletResponse res)
                    throws ServletException, IOException
   {
      ServletContext context = getServletContext();
      String strUsername = req.getParameter("username");
      String strPassword = req.getParameter("password");
      HttpSession session=req.getSession(true);
     
      LoginBean loginBean = (LoginBean)session.getAttribute("loginBean");
      if (loginBean == null)
      {
         loginBean = new LoginBean();
         session.setAttribute("loginBean",loginBean);
      }
      loginBean.setEnteredUsername(strUsername);
      loginBean.setEnteredPassword(strPassword);      
         
     
      RequestDispatcher rd = context.getRequestDispatcher("/fo.jsp");
      rd.forward(req,res);      


   }

   public void doPost
      (HttpServletRequest req, HttpServletResponse res)
                    throws ServletException, IOException
   {
      doGet (req, res);
   }
}


Here is fo.jsp

<%@ page import="mypackage.LoginBean"%>
<jsp:useBean id="loginBean" class="mypackage.LoginBean" scope="session" />
<html>
<head>
<title>FO Page</title>
</head>
<body>
<h3 align="center"><font face="Arial">FO Page</font></h3>

</body>
</html>

I now the tomcat error message:

org.apache.jasper.JasperException: /fo.jsp(2,0) The value for the useBean class attribute mypackage.LoginBean is invalid.
      org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
      org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
      org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
      org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
      LoginHandler.doGet(LoginHandler.java:30)
      LoginHandler.doPost(LoginHandler.java:39)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

Have I got a class path issue?

Phil

0
 
objectsCommented:
should be

<%@ page import="com.mypackage.LoginBean"%>
<jsp:useBean id="loginBean" class="com.mypackage.LoginBean" scope="session" />
0
 
Mayank SAssociate Director - Product EngineeringCommented:
>> the 'com' folder I placed another folder 'mypackage' in which I placed LoginBean

Hope you mean LoginBean.class
0
 
pmccar06Author Commented:
Hi guys

Thanks for all your help, all problems fixed, you guys rock!

Cheers Phil
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 3
  • 2
  • 2
  • +3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now