【问题标题】:classcastexception: cant be cast to com.sun.jersey.spi.container.servlet.ServletContainer [duplicate]classcastexception:无法转换为 com.sun.jersey.spi.container.servlet.ServletContainer [重复]
【发布时间】:2017-07-18 10:29:36
【问题描述】:

我正在创建一个网络应用程序并不断遇到此错误

java.lang.ClassCastException: org.uiowa.logsdon.genespot.JobInformation.GeneSpotAnalysis cannot be cast to javax.servlet.Servlet
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1050)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:779)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:133)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
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)

这是我的 web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app version="3.0"
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">


  <display-name>The Gene Spot</display-name>
  <welcome-file-list>
    <welcome-file>jobSubmission 2.html</welcome-file>
  </welcome-file-list>


   <servlet>
      <servlet-name>TheGeneSpot</servlet-name>
      <servlet-class>org.uiowa.logsdon.genespot.JobInformation.GeneSpotAnalysis</servlet-class> 
<init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>org.uiowa.logsdon.genespot.JobInformation</param-value>
  </init-param>
   </servlet>

   <!-- Note: All <servlet> elements MUST be grouped together and
         placed IN FRONT of the <servlet-mapping> elements -->

   <servlet-mapping>
      <servlet-name>TheGeneSpot</servlet-name>
      <url-pattern>/analysis/*</url-pattern>
   </servlet-mapping>
</web-app>

Servlet 本身 (Java)

package org.uiowa.logsdon.genespot.JobInformation;

import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import java.util.List;

import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
@Path("/GeneSpot")
public class GeneSpotAnalysis {
    @POST
    public String Genespot(@FormParam("inputArray[]") List<String> datalist)
            throws UnsupportedEncodingException, FileNotFoundException {
//Code here
}

然后发布到 servlet(JS)

var location =window.location.href+"analysis/GeneSpot"
    var results = $.post(location,{inputArray:inputArray},function(results){
    })

我在 eclipse 上运行它,我知道在运行 tomcat 服务器时会出现一些问题,但在问这个问题之前我已经清理并构建了项目

我很肯定,我只是忽略了一些微不足道的事情,但感谢任何帮助

【问题讨论】:

    标签: java eclipse web-services tomcat servlets


    【解决方案1】:

    web.xml 中的 servlet-class 标记值未指向正确的 Servlet 类。

    我注意到您正在使用 Jersey REST API 实现来公开您的 REST 服务,因此您有两种选择;要么使用 Jersey Servlet 而不是你自己的资源类 (GeneSpotAnalysis) 来处理你的请求,要么将你的 @Path 注释更改为 @ApplicationPath。

    使用第一个更传统的选项,您可以更改 此行中的 web.xml

    &lt;servlet-class&gt;org.uiowa.logsdon.JobInformation.GeneSpotAnalysis&lt;/servlet-class&gt;

    为此:

    <servlet-class><servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> </servlet-class>

    您可以在此页面上查看更多详细信息 https://jersey.java.net/documentation/latest/deployment.html#deployment.servlet.3

    【讨论】:

    • 这是我在输入时出现的错误。我确实在 servlet 类中有 .genespot。道歉。
    • 错误仍在发生
    猜你喜欢
    • 2021-06-18
    • 2020-10-04
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    相关资源
    最近更新 更多