gpt4 book ai didi

servlets - 如何在JettyRunner的Gradle项目中包含servlet jar?

转载 作者:行者123 更新时间:2023-12-03 06:15:25 26 4
gpt4 key购买 nike

我正在使用android studio 1.3。我已经从这里安装了 jetty 赛跑者插件:

https://github.com/guikeller/jetty-runner

我需要扩展HttpServlet,因此在build.gradle中包含以下依赖项:

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'jetty'

dependencies {
...
compile 'javax.servlet:servlet-api:3.0-alpha-1'
}

在 jetty 启动时,该方法会导致NoSuchMethod异常:
ServletContext.getServletRegistration

一些堆栈跟踪:
INFO::main: Logging initialized @131ms
INFO:oejr.Runner:main: Runner
INFO:oejs.Server:main: jetty-9.2.5.v20141112
WARN:oeja.AnnotationConfiguration:main: ServletContainerInitializers: detected.
Class hierarchy: empty
WARN:oejuc.AbstractLifeCycle:main: FAILED
org.eclipse.jetty.annotations.ServletContainerInitializersStarter:
java.lang.NoSuchMethodError:
javax.servlet.ServletContext.getServletRegistration(Ljava/lang/String;)Ljavax/servlet/ServletRegistration;
...

如果我不包括servlet jar依赖项,则运行程序可以正常运行(但是我无法编译项目,因为我需要扩展HttpServlet ...)。

我看到将servlet jar添加为“编译”依赖项可能是不正确的,而是这样的:
providedCompile 'javax.servlet:servlet-api:3.0-alpha-1'

但是仍然会引发相同的NoSuchMethod异常。

什么是正确的方法?

谢谢

最佳答案

javax.servlet:servlet-api:3.0-alpha-1



这是Servlet 3.0的第一个alpha版本。这与最终版本相去甚远。特定的Alpha版本确实还不包含上述方法。您可以使用ZIP工具提取有问题的JAR文件,然后检查源文件和类文件,从而轻松地自己确认。

您需要 javax.servlet:javax.servlet-api:3.0.1 才能拥有Servlet 3.0 API的最终版本。

关于servlets - 如何在JettyRunner的Gradle项目中包含servlet jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31251653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com