TOMCAT: 在 CATALINA_HOME 环境变量中引用 < ' > 导致加载错误?

TOMCAT: quote < ' > in CATALINA_HOME environment variable causing load error?

我正在尝试在以下路径中使用 service.bat 将 tomcat 安装为服务: C:\Program Files\text with' quote\Tomcat

但我不断收到以下错误: java.io.FileNotFoundException: C:\Program Files\text with quote\Tomcat\conf\logging.properties; (系统找不到指定的路径)

正如您从错误消息中看到的那样,' 被忽略,因此某些文件无法正确 found/loaded。

如果我切换到不带引号的路径,一切正常。有没有办法解决这个问题,因为我需要在路径中包含一个 '?

您的问题来自 Procrun 解析其 command line parameters. In those parameters which accept lists of values (++DependsOn, ++Environment, ++JvmOptions, ++JvmOptions9, ++StartParams and ++StopParams) single quotes ' are stripped after the parameter value has been split into single values. There is no way to quote them (cf. source code) 的方式。

因此 service.bat 中使用的 ++JvmOptions 参数解释如下(每行一个值):

-Dcatalina.home=C:\Scarlett oHara;-Dcatalina.base=C:\Scarlett oHara
-Dignore.endorsed.dirs=C:\Scarlett oHara\endorsed;-Djava.io.tmpdir=C:\Scarlett oHara\temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=C:\Scarlett oHara\conf\logging.properties;

由于 ' 无意引用,您可能会注意到某些条目由 ; 加入。

修复此问题的唯一方法是启动 Prunmgr(可执行文件重命名为 tomcat*w.exe)并在 "[=51] 中修复它们=]"" 选项卡:

-Dcatalina.home=C:\Scarlett o'Hara
-Dcatalina.base=C:\Scarlett o'Hara
-Dignore.endorsed.dirs=C:\Scarlett o'Hara\endorsed
-Djava.io.tmpdir=C:\Scarlett o'Hara\temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=C:\Scarlett o'Hara\conf\logging.properties;

或直接处理 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0 注册表项。

另见:

  • 由于引用引起的类似问题:Adding multiple values to an environment in registry and retrieving in Java application