当我使用jetty启动服务器时,控制台将显示以下错误信息:
有人能帮助我吗? 3Q。
[2014-10-26 14:11:02 WARN org.eclipse.jetty.util.component.AbstractLifeCycle:204] FAILED org.eclipse.jetty.server.handler.HandlerCollection@3bbbbafc:
java.lang.NoSuchMethodError: javax.servlet.ServletContext.getServletRegistration(Ljava/lang/String;)Ljavax/servlet/ServletRegistration;
java.lang.NoSuchMethodError: javax.servlet.ServletContext.getServletRegistration(Ljava/lang/String;)Ljavax/servlet/ServletRegistration;
at org.apache.jasper.runtime.TldScanner.onStartup(TldScanner.java:231)
at org.eclipse.jetty.plus.annotation.ContainerInitializer.callStartup(ContainerInitializer.java:106)
at org.eclipse.jetty.annotations.ServletContainerInitializerListener.contextInitialized(ServletContainerInitializerListener.java:107)
at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:775)
at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:424)
at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:767)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:249)
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:492)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:172)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
at org.eclipse.jetty.server.Server.doStart(Server.java:280)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.mortbay.jetty.runner.Runner.run(Runner.java:512)
at org.mortbay.jetty.runner.Runner.main(Runner.java:633)
[2014-10-26 14:11:02 WARN org.eclipse.jetty.util.component.AbstractLifeCycle:204] FAILED org.eclipse.jetty.server.Server@549b6220: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getServletRegistration(Ljava/lang/String;)Ljavax/servlet/ServletRegistration;
java.lang.NoSuchMethodError: javax.servlet.ServletContext.getServletRegistration(Ljava/lang/String;)Ljavax/servlet/ServletRegistration;
at org.apache.jasper.runtime.TldScanner.onStartup(TldScanner.java:231)
at org.eclipse.jetty.plus.annotation.ContainerInitializer.callStartup(ContainerInitializer.java:106)
at org.eclipse.jetty.annotations.ServletContainerInitializerListener.contextInitialized(ServletContainerInitializerListener.java:107)
at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:775)
at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:424)
at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:767)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:249)
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:492)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:172)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
at org.eclipse.jetty.server.Server.doStart(Server.java:280)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.mortbay.jetty.runner.Runner.run(Runner.java:512)
at org.mortbay.jetty.runner.Runner.main(Runner.java:633)
Exception in thread "main" java.lang.NoSuchMethodError: javax.servlet.ServletContext.getServletRegistration(Ljava/lang/String;)Ljavax/servlet/ServletRegistration;
at org.apache.jasper.runtime.TldScanner.onStartup(TldScanner.java:231)
at org.eclipse.jetty.plus.annotation.ContainerInitializer.callStartup(ContainerInitializer.java:106)
at org.eclipse.jetty.annotations.ServletContainerInitializerListener.contextInitialized(ServletContainerInitializerListener.java:107)
at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:775)
at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:424)
at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:767)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:249)
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:492)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:172)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
at org.eclipse.jetty.server.Server.doStart(Server.java:280)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.mortbay.jetty.runner.Runner.run(Runner.java:512)
at org.mortbay.jetty.runner.Runner.main(Runner.java:633)
Disconnected from the target VM, address: '127.0.0.1:50852', transport: 'socket'
答案 0 :(得分:1)
错误......
java.lang.NoSuchMethodError: javax.servlet.ServletContext.
getServletRegistration(Ljava/lang/String;)Ljavax/servlet/ServletRegistration;
告诉你关键信息。
即您的创业公司无法找到方法ServletContext.getServletRegistration(String)
查看javadoc,我们可以看到Servlet API 3.0中添加了该方法。
查看堆栈跟踪,我们可以通过Jetty Runner引导程序看到您正在使用Jetty(7.0和9.0之间的版本)以及JSP。
您的服务器配置不好,因为它没有使用正确的Servlet API版本,这不是Jetty项目维护的Jetty Runner组件的错误,因为它内置了正确的Servlet API版本。但是,您的IDEA设置,IDEA Jetty Runner插件配置或您的项目都在降级Servlet API版本并使用自己的jar(在服务器级别)。
Jetty进程正在通过执行它找到的各种ServletContextInitializer条目来配置WebAppContext。在这种特殊情况下,正在执行JSP以允许它为您的webapp配置JSP支持。 正是在这一点上你遇到了错误。
答案 1 :(得分:1)
我是您正在使用的插件的开发者。 :)
以下是插件/项目的GitHub链接:IDEA Jetty Runner
正如您在"命令行"实现我将使用插件提供的jetty-runner jar来启动jetty服务器。以下是该课程的链接:Jetty Runner Command Line
之所以这样做,是因为IntelliJ已经提供了一个很棒的内置插件,可以在其企业版IDE上支持多个版本的Jetty。此外,他们还有一个团队来处理这可能导致的各种错误/问题。
与此同时,这个插件是在我的业余时间开发的,并且免费提供,因此人们至少可以在" Community Edition"上使用轻量级Java EE服务器。 IDE的版本并保持公平我决定将其限制为特定版本的jetty / servlet-api。
那么,回到你的问题; Joakim在这里说的是正确的,插件将你的应用程序降级到servlet-api-2.5,换句话说,降级你的项目以使用servlet-api-2.5,你应该没问题。
"但是,您的IDEA设置,IDEA Jetty Runner插件配置或您的项目正在使用自己的jar(在服务器级别)降级Servlet API版本。"
你可以在github上找到更多关于插件的内容。
顺便说一句,感谢您使用插件! ;)