Java ServletContextListener严重:配置类marktest.Config的应用程序侦听器时出错

Java ServletContextListener严重:配置类marktest.Config的应用程序侦听器时出错,java,web-services,tomcat,jersey,tomcat7,Java,Web Services,Tomcat,Jersey,Tomcat7,我的Javaservlet似乎在抱怨它找不到包中包含的文件(marktest)。我正在使用Eclipse(Indigo)开发和安装Tomcat7 以下是错误: SEVERE: Error configuring application listener of class marktest.Config java.lang.ClassNotFoundException: marktest.Config at org.apache.catalina.loader.WebappClassLoa

我的Javaservlet似乎在抱怨它找不到包中包含的文件(marktest)。我正在使用Eclipse(Indigo)开发和安装Tomcat7

以下是错误:

SEVERE: Error configuring application listener of class marktest.Config
java.lang.ClassNotFoundException: marktest.Config
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
    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.StandardContext.listenerStart(StandardContext.java:4660)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)
package marktest;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;


public class Config implements ServletContextListener 
{

    private ExecutorService executor;

    @Override
    public void contextInitialized(ServletContextEvent event) 
    {
        System.out.println("########################## ServletContextListener started ###############################");

    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
    }

}
下面是Config.java,其中包含实现ServletContextListener的类,它表示在错误中找不到该类:

SEVERE: Error configuring application listener of class marktest.Config
java.lang.ClassNotFoundException: marktest.Config
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
    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.StandardContext.listenerStart(StandardContext.java:4660)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)
package marktest;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;


public class Config implements ServletContextListener 
{

    private ExecutorService executor;

    @Override
    public void contextInitialized(ServletContextEvent event) 
    {
        System.out.println("########################## ServletContextListener started ###############################");

    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
    }

}
这里是web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>de.vogella.jersey.first</display-name>
  <servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>

    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>marktest</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>

    <listener>
        <listener-class>marktest.Config</listener-class>
    </listener>

</web-app> 

这个问题可以结束了,原来eclipse有问题,没有发布我的更改

在我看来,您的类似乎没有通过WTP正确部署到Tomcat(再次清理/发布)。

导致删除库源或在生成路径中移动一个库源。确保在生成路径>库中没有任何遗漏的库


清理项目并再次运行tomcat。这将有所帮助。

即使我之前在tomcat server web.xml中配置侦听器类条目时得到了与给定快照中突出显示的相同的
ClassNotFoundException
-

收到此错误后,我将tomcat configWeb.xml中的相同条目替换为 {Project\u Path}/WebContent/WEB-INF/WEB.xml.


Post错误在tomcat服务器启动时得到解决。

WTP是如何配置的(假设您使用WTP)?您的类是否正确部署到Tomcat?是的,我正在使用WTP和Jersey。所有WTP设置都应为默认设置。包含包的src目录部署到WEB-INF/classes和/WebContent部署到/(默认情况下)post@MarcelStör-我刚才解决了这个问题,现在一切正常。但是你是对的,这些类并没有被Eclipse删除。如果你能把它作为一个答案,我会接受的!月食的这一方面可能会让人发疯。@noogrub-这只是我的许多方面之一。m2e、WTP和SVN插件都是悲惨的故事。使用它10多年了,但我现在是一个快乐的IntelliJ用户。@MarcelStör如果IntelliJ和Android Studio(基于IntelliJ)一样不方便,而且有问题,那么我不明白人们如何使用它,甚至如何为此付费。