我正在使用teamcity 5.1.5 ..尝试使用调用java函数的AfterDeploy目标构建一个MSBuild项目。
我收到以下错误:'java'未被识别为内部或外部命令
我已经在构建服务器和代理服务器上测试了java命令,它们都运行了命令..但是在通过teamcity运行时它似乎失败了。
任何想法?
我已经检查了构建代理env变量,它们似乎正确设置:
中定义的环境变量 代理配置文件
JAVA_HOME C:\ Program 文件\爪哇\ jdk1.6.0_21
JDK_16 C:\ Program 文件\爪哇\ jdk1.6.0_21
TEAMCITY_JRE C:\ TeamCity \ jre
我唯一注意到的是java.exe实际上在bin文件夹中而不是根文件夹。
答案 0 :(得分:5)
默认情况下,Build Agent从SYSTEM帐户运行。 SYSTEM帐户环境变量与您用于测试的普通帐户不同。我怀疑java.exe不在SYSTEM帐户的PATH中。通过向其添加JDK_HOME \ bin来调整PATH,或将代理服务配置为从其他帐户运行。
请记住,在对PATH的更改生效之前,您需要重新启动构建代理服务。
答案 1 :(得分:1)
您还可以在本地管理员帐户下运行构建代理服务(由于多种原因,这可能是首选),但TeamCity中存在一个错误,其中代理仅使用USER环境变量(例如PATH) ,而不是Windows中的SYSTEM + USER。
因此,如果您为用户定义了路径,则代理不知道系统路径!
现在(已验证)的解决方法是将用户路径添加到系统路径并删除用户路径(在System / Avanced System Settings / Environment Variables下)。
这里的bug和一个(截至2012-01-29未解决): http://devnet.jetbrains.net/thread/276957
答案 2 :(得分:0)
我们在普通用户帐户下运行代理。 Java可以在交互式会话中找到,但不能在TeamCity构建中找到。我不得不将java bin目录添加到用户的PATH变量中。注销/登录后,可以通过TeamCity构建找到java命令。