【问题标题】:HTTP Status 500 - Error instantiating servlet class com.servlet.ControllerHTTP 状态 500 - 实例化 servlet 类 com.servlet.Controller 时出错
【发布时间】:2015-05-08 06:43:56
【问题描述】:

我正在尝试为CRUD operations in JSP 给出的示例。但是调用控制器时出错。

当我执行他们给出的代码时,我收到以下错误:

May 08, 2015 12:01:20 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
May 08, 2015 12:01:20 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.59
May 08, 2015 12:01:20 PM org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [147] milliseconds.
May 08, 2015 12:01:20 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(E:\coding\eclipse32Juno\workspace\web\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\jTableServletSetup\WEB-INF\lib\servlet-api.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class
May 08, 2015 12:01:21 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(E:\coding\eclipse32Juno\workspace\web\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\AjaxCurdjTableServlet\WEB-INF\lib\servlet-api.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class
May 08, 2015 12:01:21 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
May 08, 2015 12:01:21 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
May 08, 2015 12:01:21 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1305 ms
May 08, 2015 12:01:47 PM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet Controller as unavailable
May 08, 2015 12:01:47 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet Controller
java.lang.ClassNotFoundException: com.servlet.Controller
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:506)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:488)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:115)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1148)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:864)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:134)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

然后我将index.jsp 更改如下,以检查是否调用了 Controller:

<!DOCTYPE html>
<html>
<head>
<title>CRUD operations using jTable in J2EE</title>
<!-- Include one of jTable styles. -->
<link href="css/metro/blue/jtable.css" rel="stylesheet" type="text/css" />
<link href="css/jquery-ui-1.10.3.custom.css" rel="stylesheet"
    type="text/css" />
<!-- Include jTable script file. -->
<script src="js/jquery-1.8.2.js" type="text/javascript"></script>
<script src="js/jquery-ui-1.10.3.custom.js" type="text/javascript"></script>
<script src="js/jquery.jtable.js" type="text/javascript"></script>

<script type="text/javascript">
    $(document).ready(function() {
        $('#StudentTableContainer').jtable({
            title : 'Students List',
            actions : {
                listAction : 'Controller?action=list',
                createAction : 'Controller?action=create',
                updateAction : 'Controller?action=update',
                deleteAction : 'Controller?action=delete'
            },
            fields : {
                studentId : {
                    title : 'Student Id',
                    width : '30%',
                    key : true,
                    list : true,
                    edit : false,
                    create : true
                },
                name : {
                    title : 'Name',
                    width : '30%',
                    edit : true
                },
                department : {
                    title : 'Department',
                    width : '30%',
                    edit : true
                },
                emailId : {
                    title : 'Email',
                    width : '20%',
                    edit : true
                }
            }
        });
        //$('#StudentTableContainer').jtable('load');
    });
</script>

</head>
<body>
    <div style="width: 80%; margin-right: 10%; margin-left: 10%; text-align: center;">
        <h4>AJAX based CRUD operations using jTable in J2ee</h4>
        <div id="StudentTableContainer"></div>
    </div>
    <form action="Controller" method="get">
    Form contents:
    <button type="submit">Submit</button>
    </form>
</body>
</html>

现在当我点击按钮时会出现以下错误:

May 08, 2015 12:07:31 PM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet Controller as unavailable
May 08, 2015 12:07:31 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet Controller
java.lang.ClassNotFoundException: com.servlet.Controller
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:506)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:488)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:115)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1148)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:864)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:134)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

我无法找到我做错的地方。

这是我的项目目录结构:

【问题讨论】:

  • 请查看生成的 WAR 文件并检查文件 Controller.class 是否存在于 WEB-INF/classes/com/servlet/ 目录中
  • 我认为问题可能在于添加的 jar 文件。可能是我添加了一些冲突的 jar。但我不确定..
  • Controller.class在其他位置AjaxCurdjTableServlet\build\classes\com\servlet
  • 这是构建文件夹,您需要解压WAR文件(在某个目录中将其重命名为zip和eztract)。还要检查 Controller.java 的包名是否等于com.servlet。同时从 lib 目录中删除 servlet-api,jar。

标签: java jquery jsp servlets crud


【解决方案1】:

我看不到您的项目设置(代理在工作时会删除图表),但我猜您的 web-inf/lib 目录中有 servlet-api.jar。

如果有,请将其删除并清理并重建您的项目。 servlet 容器也提供了这个 jar 的一个实例,我认为这两者是冲突的。

【讨论】:

  • 您是否停止了应用服务器,清理了项目并重新构建了它?日志文件是否仍然包含错误See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class
  • 是的,我做到了.. 停止服务器,清理项目,然后再次执行。但问题仍然存在..
猜你喜欢
  • 2017-08-02
  • 2017-03-08
  • 2017-02-20
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多