Servlets Jetty不加载任何servlet

Servlets Jetty不加载任何servlet,servlets,jetty,jetty-9,Servlets,Jetty,Jetty 9,我正在使用安装在Ubuntu服务器LTS上的OpenJRE 11和Jetty 9。根据这一来源: $find。 /build.gradle /格拉德卢 /src /src/main ./src/main/java ./src/main/java/com.example ./src/main/java/com.example/servlet ./src/main/java/com.example/servlet/ExampleServlet.java ./src/main/webapp ./src

我正在使用安装在Ubuntu服务器LTS上的OpenJRE 11和Jetty 9。根据这一来源:

$find。
/build.gradle
/格拉德卢
/src
/src/main
./src/main/java
./src/main/java/com.example
./src/main/java/com.example/servlet
./src/main/java/com.example/servlet/ExampleServlet.java
./src/main/webapp
./src/main/webapp/WEB-INF
./src/main/webapp/WEB-INF/jetty-WEB.xml
./src/main/webapp/WEB-INF/WEB.xml
build.gradle:

插件{
id‘java’
“战争”
}
存储库{
jcenter()
}
组“com.example”
版本“0.1”
//对于Ubuntu的openjdk-11-jre-headless
sourceCompatibility=1.11
依赖关系{
def jsp_dep='org.eclipse.jetty:apachejsp:9.4.15.v20190215'
if(gradle.startParameter.taskNames.contains('war')){
//捆绑在Ubuntu的LibJetty9Java中,因此不嵌入
可编译jsp_dep
}
//这不需要是“实现”。
//当托管在Jetty中时,仅此一项就足以支持JSTL
//taglibs:taglibs标准-{spec,impl}:1.2.5
实现“org.eclipse.jetty:apachejstl:9.4.15.v20190215”
}
示例servlet:

package com.example.servlet;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
@WebServlet(“/示例”)
公共类ExampleServlet扩展了HttpServlet{
@凌驾
受保护的无效数据集(HttpServletRequest-req、HttpServletResponse-resp){
}
}
jetty-web.xml:


web.xml:


编译和安装:

$。/gradlew战争
在1s内成功构建
2项可执行任务:2项已执行
$unzip-l build/libs/jetty-example-0.1.war
存档:build/libs/jetty-example-0.1.war
长度日期时间名称
---------  ---------- -----   ----
0 2019-06-26 14:08 META-INF/
25 2019-06-26 14:08 META-INF/MANIFEST.MF
0 2019-06-26 14:08 WEB-INF/
0 2019-06-26 14:08 WEB-INF/课程/
2019-06-26 14:08 WEB-INF/classes/com/
0 2019-06-26 14:08 WEB-INF/classes/com/example/
0 2019-06-26 14:08 WEB-INF/classes/com/example/servlet/
696 2019-06-26 14:08 WEB-INF/classes/com/example/servlet/ExampleServlet.class
0 2019-06-26 14:08 WEB-INF/lib/
125852019-05-0418:20 WEB-INF/lib/apache-jstl-9.4.15.v20190215.jar
40153 2019-04-15 11:56 WEB-INF/lib/taglibs-standard-spec-1.2.5.jar
206430 2019-04-15 11:56 WEB-INF/lib/taglibs-standard-impl-1.2.5.jar
255 2019-06-26 13:55 WEB-INF/jetty-WEB.xml
444 2019-06-26 14:03 WEB-INF/WEB.xml
---------                     -------
260588 14个文件
$mv jetty-example-0.1.war root.war
$chmod 644 root.war
#chown jetty:adm root.war
#mv root.war/var/lib/jetty9/webapps/
#ls-la/tmp/systemd private-*jetty9.service*/tmp/*root.war*
总数12
drwxr-xr-x 3码头码头4096年6月26日14:08。
DRWXRWT 6根根根4096 Jun 26 14:08。。
drwxr-xr-x 2码头码头4096 Jun 26 14:08 jsp
当访问127.0.0.1:8080/示例时,我得到了Jetty默认的404页面,这使我相信默认情况下不会进行包扫描。在/var/log/syslog中,我得到以下消息:

Jun 26 14:07:07 web jetty9[475]:2019-06-26 14:07:07.980:INFO:oejshC.root:Scanner-0:Warning:ServletContext中未设置org.apache.tomcat.JarScanner。退回到默认的JarScanner实现。
Jun 26 14:07:08 web jetty9[475]:2019-06-26 14:07:08.162:信息:oajs.TldScanner:Scanner-0:至少有一个JAR已扫描TLD,但未包含TLD。为此记录器启用调试日志记录以获取已扫描的JAR的完整列表,但未找到TLD。在扫描过程中跳过不需要的JAR可以缩短启动时间和JSP编译时间。
Jun 26 14:07:08 web jetty9[475]:2019-06-26 14:07:08.204:信息:oejsh.上下文处理程序:Scanner-0:启动o.e.j.w。WebAppContext@156a87be{根,/,file:///var/lib/jetty9/webapps/root/,可用}{/root}
Jun 26 14:07:08 web jetty9[475]:2019-06-26 14:07:08.280:信息:oejsh.上下文处理程序:Scanner-0:停止o.e.j.w。WebAppContext@7f3b84b8{root,/,null,不可用}{/root.war}
Jun 26 14:08:29 web jetty9[475]:2019-06-26 14:08:29.532:信息:oeja.注释配置:扫描仪-0:扫描时间=28毫秒
Jun 26 14:08:29 web jetty9[475]:2019-06-26 14:08:29.564:信息:oejshC.root:Scanner-0:警告:ServletContext中未设置org.apache.tomcat.JarScanner。退回到默认的JarScanner实现。
Jun 26 14:08:29 web jetty9[475]:2019-06-26 14:08:29.725:信息:oajs.TldScanner:Scanner-0:至少有一个JAR已扫描TLD,但未包含TLD。为此记录器启用调试日志记录以获取已扫描的JAR的完整列表,但未找到TLD。在扫描过程中跳过不需要的JAR可以缩短启动时间和JSP编译时间。
Jun 26 14:08:29 web jetty9[475]:2019-06-26 14:08:29.782:信息:oejsh.上下文处理程序:Scanner-0:启动o.e.j.w。WebAppContext@42e87462{根,/,file:///var/lib/jetty9/webapps/root/,可用}{/root.war}

为什么默认jar扫描不起作用,我如何修复它呢?

事实证明:坏掉的不是包扫描;这是一个相互矛盾的背景。不知何故,Jetty认为两个重叠的上下文应该无声地失败。在我的例子中,Jetty中有一个默认的
root
目录,其中包含一个示例web应用程序。删除该选项修复了问题