获取java.lang.ClassNotFoundException:org.eclipse.jetty.servlet.listener.IntrospectorCleaner

获取java.lang.ClassNotFoundException:org.eclipse.jetty.servlet.listener.IntrospectorCleaner,jetty,osgi,embedded-jetty,spring-dm,Jetty,Osgi,Embedded Jetty,Spring Dm,我使用Jetty作为OSGi和SpringDM环境中的嵌入式web服务器。我的所有捆绑包和war文件都已成功部署。但是,我在日志中看到以下警告: 2015-03-25 17:32:13.748:WARN:oejw.StandardDescriptorProcessor:Could not instantiate listener org.eclipse.jetty.servlet.listener.IntrospectorCleaner java.lang.ClassNotFoundExcept

我使用Jetty作为OSGi和SpringDM环境中的嵌入式web服务器。我的所有捆绑包和war文件都已成功部署。但是,我在日志中看到以下警告:

2015-03-25 17:32:13.748:WARN:oejw.StandardDescriptorProcessor:Could not instantiate listener org.eclipse.jetty.servlet.listener.IntrospectorCleaner
java.lang.ClassNotFoundException: org.eclipse.jetty.servlet.listener.IntrospectorCleaner
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:789)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at org.eclipse.jetty.server.handler.ContextHandler.loadClass(ContextHandler.java:1517)
    at org.eclipse.jetty.webapp.StandardDescriptorProcessor.visitListener(StandardDescriptorProcessor.java:1863)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.visit(IterativeDescriptorProcessor.java:85)
    at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.process(IterativeDescriptorProcessor.java:72)
    at org.eclipse.jetty.webapp.MetaData.resolve(MetaData.java:366)
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710)
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
    at org.springframework.osgi.web.deployer.jetty.JettyWarDeployer.startWebAppContext(JettyWarDeployer.java:218)
    at org.springframework.osgi.web.deployer.jetty.JettyWarDeployer.startDeployment(JettyWarDeployer.java:123)
    at org.springframework.osgi.web.deployer.support.AbstractWarDeployer.deploy(AbstractWarDeployer.java:93)
    at org.springframework.osgi.web.extender.internal.activator.WarLoaderListener$DeploymentManager$DeployTask.doRun(WarLoaderListener.java:261)
    at org.springframework.osgi.web.extender.internal.activator.WarLoaderListener$DeploymentManager$BaseTask.run(WarLoaderListener.java:219)
    at org.springframework.scheduling.timer.DelegatingTimerTask.run(DelegatingTimerTask.java:70)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)

虽然此警告不会影响任何功能,但我仍然想知道为什么会发生此错误。通过很少的调试,我可以看到包“org.eclipse.jetty.servlet.listener”不是由任何模块导入的。我明确地将此导入添加到jetty webapp和spring osgi web捆绑包中,但这也没有帮助

升级您的Jetty版本,您的Jetty版本非常旧,清单有错误

这是一年多前修复的

$ cd jetty-distribution-9.2.10.v20150310
$ jar -xvf lib/jetty-servlet-9.2.10.v20150310.jar META-INF/MANIFEST.MF
 inflated: META-INF/MANIFEST.MF
$ grep -A3 Export-Package META-INF/MANIFEST.MF 
Export-Package: org.eclipse.jetty.servlet;version="9.2.10",org.eclipse
 .jetty.servlet.jmx;version="9.2.10",org.eclipse.jetty.servlet.listene
 r;version="9.2.10"
Bundle-Classpath: .

实际上,我们在jetty-9上遇到了一些其他问题,所以我们没有升级。感谢您告知,此问题已在最新版本的jetty中修复。我们会记下来的。是的,我们知道。但由于jetty-9遇到了其他依赖性问题,我们没有升级。我们将在下一个版本中考虑JET9。顺便说一句,我很想知道这个问题的解决方法是什么。我可以看到在jetty-8中正确导出了包“org.eclipse.jetty.servlet.listener”:org.eclipse.jetty.servlet.li stener;用法:=“javax.servlet,org.eclipse.jetty.util.log,org.eclipse.je tty.util”;version=“8.1.10”注意:由于您使用的是OSGi,如果jetty-9的“依赖性问题”是Java 7的最低要求,请了解这一点(这是由于Java过期、HTTP/2支持、TLS/ALPN要求以及RFC建议的HTTP/1.1更新)