teamcity - 'java'不被识别为内部或外部命令

时间:2010-12-06 15:50:40

标签: teamcity

我正在使用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文件夹中而不是根文件夹。

3 个答案:

答案 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命令。