Servlets 如何在带有jetty runner的gradle项目中包含servlet jar?
我正在使用android studio 1.3。我已经从这里安装了jetty runner插件: 我需要扩展HttpServlet,因此我在build.gradle中包含以下依赖项:Servlets 如何在带有jetty runner的gradle项目中包含servlet jar?,servlets,gradle,jetty,Servlets,Gradle,Jetty,我正在使用android studio 1.3。我已经从这里安装了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启动时
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异常
正确的方法是什么
谢谢
这是Servlet3.0的第一个alpha版本。这离最终版本还很远很远。特定的alpha版本确实还没有包含提到的方法。您可以通过使用ZIP工具提取有问题的JAR文件并检查源文件和类文件来轻松地确认它
您需要的是Servlet3.0API的最终版本