繁体   English   中英

IntelliJ想法-码头,报告异常

[英]IntelliJ idea - Jetty, report an exception

当我用码头启动服务器时,控制台将显示以下错误信息:

有人能帮我吗 ? 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'

错误...

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插件配置或您的项目正在使用自己的jar(在服​​务器级别)降级Servlet API版本。

通过执行找到的各种ServletContextInitializer条目,Jetty进程处于配置WebAppContext的中间。 在这种情况下,将执行JSP以使其能够为您的Web应用程序配置JSP支持。 这是您遇到错误的地方。

我是您使用的插件的开发人员。 :)
这是插件/项目的GitHub链接: IDEA Jetty Runner

如您在“命令行”实现中看到的,我将使用提供的插件jetty-runner jar来启动jetty服务器。 这是该课程的链接: Jetty Runner命令行

之所以这样做,是因为IntelliJ已经提供了一个出色的内置插件,可以在其企业版IDE上支持多个版本的Jetty。 此外,他们还拥有一支团队来处理可能导致的各种错误/问题。

同时,此插件是在业余时间开发的,可免费使用,以便人们至少可以在IDE的“社区版”版本上安装轻量级的Java EE服务器,并且为了公平起见,我决定将其限制为码头/ servlet-api的特定版本。

因此,回到您的问题; Joakim所说的是正确的,该插件将您的应用程序降级为servlet-api-2.5,换句话说,将您的项目降级为使用servlet-api-2.5,您应该没事。
“但是,无论是您的IDEA设置,您的IDEA Jetty Runner插件配置,还是您的项目正在使用其自己的jar(在服​​务器级别)降级Servlet API版本。”

您可以在github上找到有关该插件的更多信息。
顺便说一句,感谢您使用插件! ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM