没有设置Jetty家庭系统属性

use*_*868 3 java jetty system-properties

我试图在我的jetty配置中使用系统属性如下:

<SystemProperty name="jetty.home" default="" />/etc/jetty7/context
Run Code Online (Sandbox Code Playgroud)

但是jetty.home总是返回空的.我如何设置此变量并将其指向哪里?

我需要这个用于上下文路径.

我的码头主文件夹是D:\ Developer Tools\jetty-6.1.26.是否需要指向此文件夹?如果是这样,我该怎么做?我需要使用Windows全局变量吗?

我正在使用org.mortbay.jetty中的org.eclipse.jetty.xml.XmlConfiguration类.

Joa*_*elt 9

jetty.home 由Jetty的启动机制设定.

您正在使用Jetty 6.1.26 (注意:Jetty 6.x已被弃用,并于2010年停止使用.Jetty 7/8/9是目前主动支持的Jetty版本)

虽然我不知道Jetty 6是如何工作的,但我知道Jetty 7/8/9在这方面是如何工作的.

Jetty启动机制(模块:/jetty-start/.aka start.jar)将根据(存在于其中的文件)中的一组规则建立jetty.home属性,然后使用类(也在其中定义)在对象中建立一组属性,然后加载在命令行上声明的XML文件.start.configstart.jarorg.eclipse.jetty.xml.XmlConfigurationstart.configXmlConfigurationstart.ini

问题#1:混合码头版本

你有混合的Jetty版本,可以工作,但不能跨Jetty 6(如你声明的jetty主文件夹中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>
Run Code Online (Sandbox Code Playgroud)
  1. 它是相对路径和绝对路径的混合,不起作用.
  2. <SystemProperty>使用路径时,必须始终声明使用时的默认值.(空默认值无效)

正确的相对路径语法

<Set name="monitoredDir">
    <SystemProperty name="jetty.home" default="." />etc/jetty7/context
</Set>
Run Code Online (Sandbox Code Playgroud)

如果jetty.homeD:\Developer Tools\jetty-distribution-7.6.11.v20130520,那么这将指向D:\Developer Tools\jetty-distribution-7.6.11.v20130520\etc\jetty7\context

如果jetty.home在使用之前没有声明,XmlConfiguration那么将使用默认值,"."它将被翻译为当前工作目录(也称为System.getProperty("user.dir"))以及您指定的硬编码相对路径.如果user.dirD:\Code\MyProject,那么结果就是D:\Code\MyProject\etc\jetty7\context

正确的绝对路径语法

<Set name="monitoredDir">/etc/jetty7/context</Set>
Run Code Online (Sandbox Code Playgroud)

这种语法可能不那么关心jetty.home,结果总是/etc/jetty7/context在unix上和(很有可能)C:\etc\jetty7\context在windows上.