Jetty 9启动失败:无法获取configure_10_0.dtd(HTTP 503错误)
解决Jetty 9.4.43启动时无法获取configure_10_0.dtd的问题
问题原因
Jetty 9.4.43启动时默认尝试从https://eclipse.dev/jetty/configure_10_0.dtd拉取DTD文件,但该地址当前服务不可用(返回HTTP 503),导致XML配置解析失败,启动中断。
解决方法
1. 本地引入DTD文件
- 从Jetty 9.4.x的发布包、官方源码仓库或Maven仓库中提取对应版本的
configure_10_0.dtd文件 - 将文件放到项目资源目录下,比如
src/main/resources/dtd/ - 修改项目中Jetty配置文件(如
jetty.xml)的DOCTYPE声明,把远程URL替换为本地路径:原声明:
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://eclipse.dev/jetty/configure_10_0.dtd">
修改后:<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "dtd/configure_10_0.dtd"> - 确保Ant构建时会将该DTD文件复制到Jetty运行时可访问的目录(比如编译后的
classes目录)
2. 禁用远程DTD解析
- 在Jetty启动的JVM参数中添加以下配置,强制使用本地缓存或关闭远程DTD校验:
-Dorg.eclipse.jetty.util.resource.DefaultResourceCache.useCaches=true -Djavax.xml.validation.SchemaFactory:http://xml.org/sax/features/validation/schema=false - 如果使用Ant的
jetty任务,直接在任务配置中添加JVM参数:<jetty ...> <jvmarg value="-Dorg.eclipse.jetty.util.resource.DefaultResourceCache.useCaches=true"/> <jvmarg value="-Djavax.xml.validation.SchemaFactory:http://xml.org/sax/features/validation/schema=false"/> <!-- 其他原有配置 --> </jetty>
3. 替换为稳定的DTD地址
- 将配置中的DTD URL替换为Jetty官方归档的稳定地址,比如对应版本的DTD在Jetty发布包内置的路径,或官方代码仓库中归档的地址(避免使用临时失效的外部链接)
内容的提问来源于stack exchange,提问作者Rahul Kumar
相关产品推荐
相关产品推荐

