IntelliJ想法 - Jetty,报告异常

时间:2014-10-26 06:22:06

标签: java intellij-idea jetty

当我使用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'

2 个答案:

答案 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上找到更多关于插件的内容。
顺便说一句,感谢您使用插件! ;)