Tomcat cannot find .class -- help!

I've a simple jsp question related to Tomcat. The test.jsp file is as follows:
<html>
<head>
<title> hello there </title>
<body>
<h2> hello there </h2>
<%
hellothere h=new hellothere();
h.sayworld();
%>
</body>
</html>
My question is: where should I place hellothere.java and hellothere.class? I have tried placing them under
$CATALINA_HOME/webapps/mystuff/WEB-INF/classes and the jsp page under $CATALINA_HOME/webapps/mystuff and invoke from the browser http://localhost:8080/mystuff/test.jsp.
I know the answer has to be very obvious for the experts. Please help!

You know, I always thought it was optional, but apparently it's required. It's really a combination of two separate problems.
First, your class file must be part of a package.
Second, the import statement must start with the package name.
There are many acceptable package naming conventions, but for this example, I will use what Sun Microsystems recommends, however much I disagree with it. At the very top of hellothere.java, add the line:
package com.murthy64.hello;
You may substitute "murthy64" with whatever nickname you'd like. The intent is to pick a name that's not likely to conflict with a third party software package, for example anything under com.sun is from Sun, and com.ibm is from IBM. Yes, com.microsoft is also reserved.
Recompile the hellothere.java.
On the Tomcat Server, create the com directoy under the webapps/mystuff/WEB-INF/classes directory. Create the murthy64 directory under that newly created com directory. Then create the hello directory. Your full path at this point should end in WEB-INF/classes/com/murthy64/hello.
Place the hellothere.class file in that hello directory.
In the JSP page, change the page import statement to read:
<%@ page import="com.murthy64.hello.*" %>
Then it should work. Please correct me if I'm wrong. I'm also suggesting that you get into the habit of using the wildcard there so that if you create additional classes, you can put them in the same package (by adding the package statement), drop them into that hello directory, and the JSP page will automatically find them all.
Yes, this is a really cumbersome way of doing it, and there are shortcuts you can take, but let's get this much working first.

Similar Messages

  • Cannot find class: Exception??

    Hi
    The compiler claims it cannot find class FileNotFoundException or any other exception in my Main. Any packages I import has no problem. My structure:
    java \ myMain \ Main.java
    java \ com \ myName \ packages //no, the space is just there as visual help:)
    Use javac -classpath java\ @compile.file
    ...where compile.file is a txt file giving the paths and filenames to all files I include.
    This is first time I use the -classpath parameter, but I believed java.lang always was included. What Am I doing wrong.
    regards
    JT

    You should review the tool documentation for the javac command and its use of classpath.
    Your problem appears to be due to the way you defined classpath, "-classpath java\". While you don't provide enough information to conclusively say what it should be, I'm guessing it should also include java\myMain\ - assuming that you're issuing the javac command from the parent of the \java\ directory, as your command example indicates.
    Here is a clip about its use of the classpath.
    "When compiling a source file, the compiler often needs information about a type whose definition did not appear in the source files given on the command line. The compiler needs type information for every class or interface used, extended, or implemented in the source file. This includes classes and interfaces not explicitly mentioned in the source file but which provide information through inheritance.
    For example, when you subclass java.applet.Applet, you are also using Applet's ancestor classes: java.awt.Panel, java.awt.Container, java.awt.Component, and java.lang.Object.
    When the compiler needs type information, it looks for a source file or class file which defines the type. The compiler searches for class files first in the bootstrap and extension classes, then in the user class path (which by default is the current directory). The user class path is defined by setting the CLASSPATH environment variable or by using the -classpath command line option. (For details, see Setting the Class Path).
    If you set the -sourcepath option, the compiler searches the indicated path for source files; otherwise the compiler searches the user class path for both class files and source files."

  • Cannot find class JPanel

    Hi,
    Im trying to use swing for almost the first time.
    I changed my system to Linux and installed J2sdk 1.4.
    When I write a class
    e.g.
    import javax.swing.*;
    import java.awt.*;
    etc...
    class Test extends JPanel {
    I receive an error message "Cannot find class "JPanel""
    Can anyone help ? Maybe I didnt install the right thing ?
    Thanks
    Ulrike

    you sure reinstall and overwrite your current sdk. Do you have the runtime environment installed too -- should come with the sdk

  • Error:Cannot find class

    Hi
    I compile my application correctly, but when I copy this application in my PDA, and run this application (Hello.class) with Personal Java I saw a this message: Cannot find class Hello.class.
    I don't compile javacheck before copy in my PDA the application.
    Please help me

    Hi,
    are you sure that your classpath is set correct?
    For checking this you'll need a registry editor and check the command that is entered for the .class file extensions.
    Have a nice day,
    FReAK

  • Tomcat cannot find metho javax.mail.internet.InternetAddress.validate()

    I use Tomcat 4.1.27 and already copied the jar files of JavaMail 1.3.1 and JAF 1.0.2 into the common/lib folder of Tomcat. But when I use the method javax.mail.internet.InternetAddress.validate() in my Servlet, a ServletException is thrown because Tomcat cannot find this method. Can someone help me?
    Thanks

    This is surely a classpath problem. Check if Tomcat has another version of 'mail.jar' in its classpath.
    cheers
    Projyal

  • Java teststand - Error 1500 Cannot find class

    Hi everyone,
    I am using TestStand 2010 and Java 1.7.
    I try to add a java class in the Computer example folder, and call the method.
    The java class is simply like below, because I just want to try calling my own java class.
    I have set the Class Path in Start JVM to the directory where the Computer example (which is also the directory where I put my java class) are located.
    TestStand can call the Computer's methods, but not mine (got error Error 1500 Cannot find class). I put my my java method calling among the defaults Computer example calls.
    Furthermore I have read similiar threads but still I cannot solve the error.
    Where is the part I miss, actually? Please share some insights.
    Note: I even try to leave the Class Path empty, but TestStand still can call the Computer's methods. Why?
    public class TestJava {
    public static void main(String[] args) {
    public String returnString(boolean a){
    return "success";
    Solved!
    Go to Solution.

    In order to load a class that is inside a package you have to use the package notation (or modify the example in order to use it). The path to the class is passed directly to the JVM in order to load the class, but really what is needed is the package from the class path including the full path to the class. 
    That means you have to do the following:
    1. Set the class path to the base directory where you built all your classes, if you have the following structure:
    MyFile.java
    builds
    MyPackage
    MyFile.class
    You have to set the classpath to the builds directory
    2. When you configure your steps, you have to set the path to the class in your Java steps to MyPackage/MyFile.class (note separator is a slash, not the usual Windows backslash, so the browse button doesn't quite help with that). 
     Another important thing is that when you set the classpath you are deleting the normal class path in Java, if you are using Java classes from the default libraries you might have to add <jre directory>\lib\rt.jar

  • Warning - Cannot find class de.ewe.ikdb.action.ActionForward

    Hi,
    I'm using external classes e.g. struts as a MVC framework. Using JavaDoc to create the API documentation causes lots of the following warnings:
    warning - Cannot find class de.ewe.ikdb.action.ActionForward
    Actually the class in question is form struts, in the package org.apache.struts.action. As I'm using ant to compile the classes and to generate the documentation so the class path should be ok.
    First I tried the -link option to access the package-list file of struts. This didn't work (but maybe this is a problem due to our firewall).
    So I downloaded the documentation and put it in a local directory and used the -linkoffline option instead. Now the javadoc command works again but I still get these warning messages.
    Does anyone know how to avoid this?
    Regards,
    hedtfeld.

    Hi guys,
    as far as I understand I have to import the classes excplicitly and not with wildcards as my lazy self prefers to do it. It would be nice though to be able to use the wildcard as this is allowed by the java spec ...
    Hope this will help anyone facing the same problem.
    - hedtfeld.

  • Preverification error: Cannot find class com/sun/perseus/model/Viewport

    Hi all,
    I have a (previously) working Midlet to which I have added one line as follows:
    SVGImage image = (SVGImage)SVGImage.createEmptyImage(null);
    - and imported the necessary from javax.microedition.m2g. (I am using the library that comes with the WTK, jsr226.jar).
    This builds, jars, obfuscates fine. But when I try to preverify (using Antenna's wtkpreverify) on the jar, it gives up in disgust very swiftly as follows:
    [wtkpreverify] Error preverifying class javax.microedition.m2g.ScalableGraphics
    [wtkpreverify] VERIFIER ERROR javax/microedition/m2g/ScalableGraphics.render(IILjavax/microedition/m2g/ScalableImage;)V:
    [wtkpreverify] Cannot find class com/sun/perseus/model/Viewport
    I'm using the WTK2.5.1ea and antenna 0.9.14, CLDC1.1, MIDP2.0...
    Many thanks for any ideas.

    Problem resolved simply by replacing jsr226.jar (as distributed with WTK2.5.1ea) with m2g.jar (as distributed with J2MEPolish).

  • Cannot find class java/lang/Thread

    I'm getting this error trying to compile a program that I'm writing in java. Its a very simple program just to get me back to basics. Any ideas as to how I can fix this problem??

    Extracted from Sun's website,
    * Error Message: "Exception in thread NULL" or
    "Unable to initialize threads: cannot find class java/lang/Thread"
    If you are getting one of these fatal error messages when running java,
    javac, or appetviewer, you should check your CLASSPATH environment variable.
    It may list "c:\java" or the "classes" directory from an older release. You can either unset the CLASSPATH variable, or set it to
    include only the latest version of the Java platform class library. For example:
    C:\> set CLASSPATH=.;C:\jdk1.1.8\lib\classes.zip
    This will make sure that you are using the correct classes for this release.
    -- Sudha

  • Cannot find class "Hello"

    Hi,
    I'm developing a application for a windows ce v.2.11, and I've installed in my PDA (MIPS) Personal Java. The samples of Personal Java run perfectly. I've create a simple new class (Hello.class) with Sun One Studio, then I copy this file (Hello.class) in my pda, and when I run the application I saw this messages: "Cannot find class Hello".
    Anybody can explain me step by step the correct way to create a new class or a new jre to run in my PDA?
    Another question: Where are installed the classes as AWT?
    Thanks

    Please see my reply to your latest post.

  • TS3694 I have not updated my iphone in two years, and error -43 occured. i cannot find any help for this

    I have not updated my iphone in two years, and error -43 occured. i cannot find any help for this on the apple site

    If the phone has been hacked, we can not offer advice on Apple's support site.
    Error 1015: This error is typically caused by attempts to downgrade the iPhone, iPad, or iPod touch's software. This can occur when you attempt to restore using an older .ipsw file. Downgrading to a previous version is not supported. To resolve this issue, attempt to restore with the latest iPhone, iPad, or iPod touch software available from Apple. This error can also occur when an unauthorized modification of the iOS has occurred and you are now trying to restore to an authorized, default state.

  • Cannot find class CustomerFacadeRemote in NetBeans IDE 5.0 Quick Start Guid

    Hi,
    I am new to Sun Java Studio Enterprise 8.1. I am follwing NetBeans IDE 5.0 Quick Start Guide for J2EE Applications example and got two following errors:
    C:\SunStudioWS\CustomerBook\CustomerBook-war\src\java\web\CustomerDetail.java:41: cannot find symbol
    symbol : class CustomerFacadeRemote
    location: package ejb
    ejb.CustomerFacadeRemote custFacade = lookupCustomerFacadeBean();
    C:\SunStudioWS\CustomerBook\CustomerBook-war\src\java\web\CustomerDetail.java:41: cannot find symbol
    symbol : method lookupCustomerFacadeBean()
    location: class web.CustomerDetail
    ejb.CustomerFacadeRemote custFacade = lookupCustomerFacadeBean();
    2 errors
    C:\SunStudioWS\CustomerBook\CustomerBook-war\nbproject\build-impl.xml:299: The following error occurred while executing this line:
    C:\SunStudioWS\CustomerBook\CustomerBook-war\nbproject\build-impl.xml:141: Compile failed; see the compiler error output for details.
    BUILD FAILED (total time: 1 second)
    Here is the code:
    * CustomerDetail.java
    * Created on July 23, 2007, 3:27 PM
    package web;
    import java.io.*;
    import java.net.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    * @author yl
    * @version
    public class CustomerDetail extends HttpServlet {
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head>");
    out.println("<title>Servlet customerDetail</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("<h1>Servlet customerDetail at " + request.getContextPath () + "</h1>");
    String customerNr = request.getParameter("customer_nr");
    if((customerNr != null) && !(customerNr.equals("")))
    try{
    ejb.CustomerFacadeRemote custFacade = lookupCustomerFacadeBean();
    out.println("Customer's info for nr. " + customerNr + ": " + custFacade.getCustomerInfo(
    Integer.parseInt(customerNr)));
    }catch(javax.ejb.FinderException ex){
    out.println("Customer with nr. " + customerNr +" not found");
    out.println("<form>");
    out.println("Customer number: <input type='text' name='customer_nr' />");
    out.println("<input type=submit value=Select />");
    out.println("</form>");
    out.println("</body>");
    out.println("</html>");
    out.close();
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    /** Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    /** Returns a short description of the servlet.
    public String getServletInfo() {
    return "Short description";
    // </editor-fold>
    private web.ServiceLocator serviceLocator;
    private web.ServiceLocator getServiceLocator() {
    if (serviceLocator == null) {
    serviceLocator = new web.ServiceLocator();
    return serviceLocator;
    private ejb.CustomerFacaderRemote lookupCustomerFacaderBean() {
    try {
    return ((ejb.CustomerFacaderRemoteHome) getServiceLocator().getRemoteHome("java:comp/env/ejb/CustomerFacaderBean",ejb.CustomerFacaderRemoteHome.class)).create();
    } catch(javax.naming.NamingException ne) {
    java.util.logging.Logger.getLogger(getClass().getName()).log(java.util.logging.Level.SEVERE,"exception caught" ,ne);
    throw new RuntimeException(ne);
    } catch(javax.ejb.CreateException ce) {
    java.util.logging.Logger.getLogger(getClass().getName()).log(java.util.logging.Level.SEVERE,"exception caught" ,ce);
    throw new RuntimeException(ce);
    } catch(java.rmi.RemoteException re) {
    java.util.logging.Logger.getLogger(getClass().getName()).log(java.util.logging.Level.SEVERE,"exception caught" ,re);
    throw new RuntimeException(re);
    Thank you very much for any help.
    ylou

    In the code you have posted, some places refer to '.CustomerFacader' while others refer to '.CustomerFacade' leading to issues.
    Also: Have you considered using NetBeans 5.5.1 as an alternative to JSE 8.1?
    http://forum.java.sun.com/thread.jspa?threadID=5192837

  • Cannot find class javax.swing.JOptionPane

    Hello,
    I imported the class
    import javax.swing.JOptionPane;and written as a first line of my code in the form of a .java file.
    but error occurs as : cannot find the class javax.swing.JOptionPane. What should I do.
    Thank you.

    Are you doing something likeimport javax.swing.JOptionPane;
    class Test {
        public static void main(String args[]) {
            JOptionPane.showMessageDialog(null, "Testing",
                    "Testing", JOptionPane.INFORMATION_MESSAGE);
    }Mark

  • Cannot find class in same package but in different file

    I have following two source files. Both the file has same package statement as below
    package java.buron.doeacc ;
    But whenever i try to compile File: shoepolish.java ( mainfram.java compiled succesfully before)
    following error message appear
    ..\..\buron\doeacc\shoepolish.java:12: cannot resolve symbol
    symbol : class MainFrame
    location: class java.buron.doeacc.shoepolish
              MainFrame mainFrame = new MainFrame();
    ^
    ..\..\buron\doeacc\shoepolish.java:12: cannot resolve symbol
    symbol : class MainFrame
    location: class java.buron.doeacc.shoepolish
              MainFrame mainFrame = new MainFrame();
    ^
    Please tell me What is the problem and how it can be solved.
    why cannot find the class that are in same package.
    I have JDK 1.3
    FOLLOWING ARE THE TWO FILES
    File: mainframe.java/////////////////////////////////////////////////////////////////////
    package java.buron.doeacc ;
    import javax.swing.* ;
    import java.awt.*;
    import java.awt.event.* ;
    class MainFrame extends JFrame
         private final String APP_NAME = "Shoe Polish";
         // constructor
         public MainFrame()
              super("Shoe Polish");
              setSize(500, 500);
              setVisible(true);
    File : shoepolish.java
    package java.buron.doeacc ;
    import java.io.* ;
    import java.buron.doeacc.* ;
    class shoepolish
         public static void main(String args[])
              MainFrame mainFrame = new MainFrame();

    The javac compiler uses the Classpath to find classes. If your directory structure is c:\myjava\buron\doeacc (for example) then you need to have c:\myjava in the Classpath when you compile. For example javac -classpath c:\myjava MainFrame.java

  • Cannot find class in same directory during compilation

    hi
    i have two file hello.java & hi.java in same directory having simple println statements.
    hello.java
    public class hello {
      public static void main(String[] args) {
        System.out.println("hello");
        new hi();
    }hi.java
    class hi {
      hi() {
        System.out.println("hi");
    }hi.java has compiled
    but when i try to compile hello.java i get error saying "Cannot find symbol class hi"
    i've tried giving classpath pointing to current directory during compilation as
    javac -classpath . hello.java
    but this also does not work.
    Please let me know if i am missing anything?
    thanks in advance...

    The javac compiler uses the Classpath to find classes. If your directory structure is c:\myjava\buron\doeacc (for example) then you need to have c:\myjava in the Classpath when you compile. For example javac -classpath c:\myjava MainFrame.java

Maybe you are looking for

  • Get error 998 when starting Multisim 10 on Windows Vista Home Basic PC (Ultiboard too)

    Hi, I´m getting 2 errors when I start Multisim and Ultiboard, which are: Error loading library C:\Program Files\National Instruments\Circuit Design Suite 10.0\Autoroute.dll, ('998') The data area passed to a system call is too small. AND Error loadin

  • Finder  Sidebar Hard Drives Duplicated

    Both my internal hard drives (and their partitions)are duplicated in the side bar of the finder i have not added them they have just suddenly appeared .I also thought i saw a quicklook icon in the finder toolbar when i first upgraded and it isnt ther

  • PoP Port Connector Issues

    I seem to have a dodgie pop-port on my phone or dodgie cables? I wiggle the pc cable and that causes it to disconnect from the pc and phone yet its still in the socket and the headset sometimes if i wiggle it, the sound cuts out.. Can I take this to

  • Is it possible to scale Illustrator files inside After Effects and retain the vector quality?

    I imported an Illustrator file into my After Effects project and scaled the ai file to 200%, but noticed that is pixelated.  Is there a way to keep the ai file vector based inside After Effects. Note:  I attempted to use the "Create Shapes from Vecto

  • HTTPResponse not correct in swf running on Firefox,Chrome

    Hi I am using urlLoader.Load(urlRequest). I am listening to the HTTP response to take further action.It works fine on standalone player and IE and I get HTTP response as 200. However for Firefox,Chrome it returns HTTPResponse as 0.Can anyone please h