4

我们在做什么:

我们正在使用名为 Nolio 的工具进行自动化部署。我们需要做的步骤之一是为正在部署的应用程序设置一些环境变量——例如,JAVA_HOME指向我们首选的 java 安装目录。

我们正在使用该SET命令来永久设置环境变量 - 在大多数情况下,它都非常有效。如果我右键单击我的计算机并进入环境变量,它们都会完美显示。

问题:

不幸的是,在部署的后期,执行了一些依赖环境变量的命令行命令,并且环境变量似乎没有设置。不带参数使用SET通过显示所有当前可用的变量来验证这一点。

现在,如果我重新启动计算机,命令行命令可以正常工作。因此,问题在于,虽然变量是永久设置的并且确实出现在 GUI 中,但在我重新启动之前它们不会传播到命令提示符。

另一个有趣的花絮:如果我将命令放在一个 BAT 文件中并双击它,它运行良好,但如果我在命令提示符下执行它,变量在重新启动之前不会解析。

有谁知道解决这个问题的方法?

4

3 回答 3

6

首先,您使用的是什么版本的 Nolio?

您设置值的环境变量在一个 Nolio 操作的上下文中保持在此操作的范围内。(这就像在每个动作上打开两个不同的外壳)

这种情况下的最佳实践是在 Nolio“运行命令行”操作中使用环境变量数组输入。您应该编写两个并行环境变量名称和值的数组,并将它们作为“运行命令行”操作的输入。

于 2012-07-10T15:18:22.893 回答
2

您的变量似乎不在命令提示符的范围内。您在部署过程中的哪个阶段使用该SET命令?有趣的是 GUI 可以识别这些值,但命令提示符直到您重新启动后才会识别。

另外,我不清楚为什么不希望使用 .bat 文件。我可以提出自己的理由,但你的理由是什么?

编辑

我发现这篇文章显示了你没有提到的一个步骤。你有没有尝试过:

rem Set the JAVA_HOME environment variable and insert it into the system path.
rem This will make the javac and java commands reachable from the command line.
set JAVA_HOME="C:\Program Files\Java\jdk1.5.0_14"
set PATH=%JAVA_HOME%\bin;%PATH% 
于 2012-07-10T14:58:21.220 回答
1

我不完全确定为什么命令提示符不能识别命令而批处理文件会,但您可以使用SETXSET来查看是否可以解决您的问题。

于 2012-07-10T15:02:42.277 回答