Исключение Tomcat Servlet ClassNotFoundException

#java #tomcat #servlets

#java #tomcat #сервлеты

Вопрос:

Я создал простой сервлет.

 package servlets;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class testServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        out.print("TEST");
        out.close();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}
  

web.xml конфигурация

 <servlet>
       <servlet-name>testServlet</servlet-name>
       <servlet-class>servlets.testServlet</servlet-class>
       <load-on-startup>3</load-on-startup>
   </servlet>
    <servlet-mapping>
        <servlet-name>testServlet</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
  

журнал запуска

 cmd /c ""D:Program FilesJavajdk1.6.0_24binjava" -Dcatalina.base=C:UsersAdministrator.IntelliJIdea10systemtomcat_WebApplication "-Dcatalina.home=D:Program FilesApache Software FoundationTomcat 7.0" "-Djava.io.tmpdir=D:Program FilesApache Software FoundationTomcat 7.0temp" -cp "D:Program FilesApache Software FoundationTomcat 7.0binbootstrap.jar;D:Program FilesApache Software FoundationTomcat 7.0bintomcat-juli.jar" org.apache.catalina.startup.Bootstrap start"
13 квіт 2011 23:35:47 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:Program FilesJavajdk1.6.0_24bin;.;C:WindowsSunJavabin;C:Windowssystem32;C:Windows;D:Program FilesJetBrainsIntelliJ IDEA 10.0.2bin...bin;C:Program FilesHaskellbin;D:Program FilesHaskell Platform2011.2.0.0libextralibsbin;D:Program FilesHaskell Platform2011.2.0.0bin;C:Program FilesNVIDIA GPU Computing ToolkitCUDAv3.2bin;C:Program FilesNVIDIA CorporationPhysXCommon;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program FilesMicrosoft SQL Server100ToolsBinn;C:Program FilesMicrosoft SQL Server100DTSBinn;D:Program FilesTortoiseSVNbin;D:Program FilesMicrosoft Network Monitor 3;D:Program FilesMySQLMySQL Server 5.5bin;C:UsersAdministratorAppDataRoamingcabalbin;d:program filesjetbrainsintellij idea 10.0.2jrejrebin
13 квіт 2011 23:35:48 org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
13 квіт 2011 23:35:48 org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
13 квіт 2011 23:35:48 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 565 ms
13 квіт 2011 23:35:48 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
13 квіт 2011 23:35:48 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.12
13 квіт 2011 23:35:48 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor ROOT.xml from C:UsersAdministrator.IntelliJIdea10systemtomcat_WebApplicationconfCatalinalocalhost
13 квіт 2011 23:35:48 org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet testServlet as unavailable
13 квіт 2011 23:35:48 org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet  threw load() exception
java.lang.**ClassNotFoundException: servlets.testServlet**
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1062)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1010)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4935)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5262)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5257)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
  

Почему произошла ошибка?

Комментарии:

1. Находится ли ваш сервлет в пути к классу?

Ответ №1:

У вас должен быть этот файл:

webapps/WEB-INF/classes/servlets/testServlet.class

Тем не менее, пожалуйста, называйте свои классы с помощью pascal case вместо camel case — TestServlet

Комментарии:

1. Я использую IntelliJ IDEA. Я неправильно настроил развертывание. Смотрите экран.

2. Мои настройки артефакта ! [настройки артефакта][1] [1]: i.imgur.com/kCRcO.png

3. @БИЛЛ, а как выглядит ваш сервлет?

4. Я считаю, что регистр camel — это то, что у них есть (это когда вы начинаете со строчной буквы и пишете заглавными буквами каждое внутреннее слово… итак, все верблюжьи «горбы» находятся внутри word). Но ваш комментарий верен, что имена классов должны быть заглавными по соглашению. 🙂

Ответ №2:

  1. Каждый раз, когда вы создаете или редактируете существующий сервлет, вы должны экспортировать .файл war возвращается в папку WebApps.
  2. Убедитесь, что созданные классы сервлетов не обязательно должны находиться в / WEB-INF/CLASSES, но должны быть созданы в пакете.
  3. Убедитесь, что на файл .jsp, в котором используется этот класс сервлета, есть ссылка в xxxx.jsp в web.xml файл.