您似乎在使用 Windows。
您遇到的问题与 Microsoft Windows 独有的传统上不稳定的文件系统锁定行为有关(没有其他运行 Java 的操作系统可以这样做)
查看官方文档
https://www.eclipse.org/jetty/documentation/current/troubleshooting-locked-files-on-windows.html
如果您遵循该文档中的建议,则无需停止/启动特定的 web 应用。
重要提示:请注意,文档中的建议仅适用于 DEVELOPMENT TIME,对于生产来说不是一个好的常规配置。
从 OP 插入:
我按照上面文档中的说明进行操作,并且成功了!这是我所做的:
-
找到您的 webdefault.xml 文件。
- 我的在 C:\Place_where_Jetty_was_installed\Jetty\etc\
打开并搜索UseFileMappedBuffer
找到这个:
<init-param>
<param-name>useFileMappedBuffer</param-name>
<param-value>true</param-value>
</init-param>
- 将参数值设置为 false
<param-value>false</param-value>
话虽如此,如果你还想走这条路,有两种方法......
1.使用热重载
为您的“重新加载”网络应用创建一个可部署的 XML,并 touch 它以热重新加载该 1 个网络应用。
文件:${jetty.base}/webapps/myapp.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
"http://www.eclipse.org/jetty/configure_9_3.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/myapp</Set>
<Set name="war"><Property name="jetty.webapps"/>myapp.war</Set>
</Configure>
然后让码头重新加载它只是......
$ touch /path/to/myjettybase/webapps/myapp.xml
这个标准 Posix 命令将更新该文件的时间戳,Jetty 将看到该时间戳为“嘿,该文件已更新,我必须重新加载它”
2。使用 JMX 停止/启动特定的 web 应用
在 JMX 模块处于活动状态 (--module=jmx) 的情况下启动 Jetty。
启动 JMX 控制台(JDK 附带 jmc 和 jconsole)并连接到正在运行的 Jetty 实例。为您的特定 web 应用找到 MBean,并在该特定 web 应用上使用 stop() 和 start() 命令。