如何在应用程序启动脚本中用环境变量替换硬编码 JAVA_HOME?

How to replace hard coded JAVA_HOME with environment variable in app startup scripts?

我需要在 windows 8 服务器的所有应用程序启动脚本中用环境变量替换硬编码的 java jre 路径 JAVA_HOME。在脚本中,代码如下: 设置 JAVA_HOME = c:\program files(x86)\java...

这些脚本是配置文件。我以前没有处理过这个脚本,不想搞砸应用程序。我知道在 cmd 中我可以调用 set JAVA_HOME 从环境变量中获取路径。谁能告诉我如何在配置(在我的例子中是 .conf)脚本中做到这一点?谢谢


已编辑:让我在这里更具体一点。 Java 服务是包装器,代码如下: 设置 JAVA_HOME=C:\Program Files (x86)\Java\jre1.8.0_51 wrapper.java.command=%JAVA_HOME%/bin/java

我是否应该只删除 set 行,然后 wrapper.java.command 将选择 JAVA_HOME 的正确值。如果我不需要将 JAVA_HOME 设置为与系统默认值不同的值,我不需要使用 set,这样说是否正确?谢谢

不确定您是否能够做到这一点。

环境变量特定于命令 shell 解释器,这就是为什么 *nix shells 可以使用不同语法的原因。

如果应用程序正在读取 conf 文件然后应用路径(即,要使用的 java 路径),那么它必须准备好处理它,而不是仅仅接受路径作为fully-qualified.

最好的办法可能是拥有一个包含 %JAVA_HOME%(以及任何其他环境变量)的基本 conf 文件,然后使用实际的 run-time conf 文件生成fully-qualified 路径。不确定什么 Windows 工具最好,如果你有 cygwin 可能会更容易。

我不明白你为什么要指定它。大多数应用程序将在环境中固有地使用 JAVA_HOME,因此如果您在全局范围内设置它,应用程序应该直接选择它,然后不需要 conf 文件中的任何内容。我想如果你有多个 java 安装并且你需要在 per-app 的基础上进行选择,但是我会在做任何其他事情之前设置启动脚本 JAVA_HOME,然后再做一次从 .conf 中删除它,让应用程序自行选择它。