jetty.home 由 Jetty 的启动机制设置。
您正在使用 Jetty 6.1.26 (注意:Jetty 6.x 已被弃用,并于 2010 年结束生命周期)
虽然我不知道 Jetty 6 的工作原理,但我知道 Jetty 7/8/9 在这方面的工作原理。
更新:2019 年 8 月:Jetty 9.4.x 是 Jetty 当前稳定且受到积极支持的版本主线。
Jetty 启动机制(模块:/jetty-start/。又名start.jar)将在start.config(存在于start.jar 中的文件)中建立jetty.home 属性based on a set of rules,然后使用@987654331 @class(also defined in the start.config)在XmlConfiguration对象中建立一组属性,然后加载在命令行和start.ini声明的XML文件。
问题 1:混合 Jetty 版本
您可以使用多种 Jetty 版本,但不能跨 Jetty 6(如您声明的 D:\Developer Tools\jetty-6.1.26 的码头主文件夹中所示)和 Jetty 7(如您的 /etc/jetty7/context 声明中所示)。它们是 100% 不兼容的。
问题 #2:错误的 XML 语法使用
您使用路径的 XML 语法是错误的。
您的语法
<Set name="monitoredDir">
<SystemProperty name="jetty.home" default="" />/etc/jetty7/context
</Set>
- 它是相对路径和绝对路径的混合,将不起作用。
- 在使用路径时,您必须始终在
<SystemProperty> 上声明一个默认值。 (空默认无效)
相对路径的正确语法
<Set name="monitoredDir">
<SystemProperty name="jetty.home" default="." />etc/jetty7/context
</Set>
如果您的jetty.home 是D:\Developer Tools\jetty-distribution-7.6.11.v20130520,那么这将指向D:\Developer Tools\jetty-distribution-7.6.11.v20130520\etc\jetty7\context
如果您在使用XmlConfiguration 之前未声明jetty.home,则将使用默认值,"." 将被翻译为您当前的工作目录(也称为System.getProperty("user.dir"))加上您指定的硬编码相对路径。如果user.dir 是D:\Code\MyProject,那么结果将是D:\Code\MyProject\etc\jetty7\context
绝对路径的正确语法
<Set name="monitoredDir">/etc/jetty7/context</Set>
这种语法可能不太关心jetty.home,结果在unix上总是/etc/jetty7/context,在windows上(很可能是)C:\etc\jetty7\context。