【问题标题】:teamcity - 'java' is not recognized as an internal or external commandteamcity - 'java' 未被识别为内部或外部命令
【发布时间】:2015-07-07 20:55:09
【问题描述】:

我正在使用 teamcity 5.1.5.. 尝试使用调用 java 函数的 AfterDeploy 目标构建 MSBuild 项目..

我收到以下错误:“java”未被识别为内部或外部命令

我已经在构建服务器和代理服务器上测试了 java 命令,它们都运行该命令..但是在通过 teamcity 运行时似乎失败了。

有什么想法吗?

我检查了构建代理环境变量,它们似乎设置正确:

环境变量定义在 代理配置文件

JAVA_HOME C:\程序 文件\Java\jdk1.6.0_21

JDK_16 C:\程序 文件\Java\jdk1.6.0_21

TEAMCITY_JRE C:\TeamCity\jre

我唯一注意到的是 java.exe 实际上在这里的 bin 文件夹中,而不是根文件夹中。

【问题讨论】:

    标签: teamcity


    【解决方案1】:

    默认情况下,构建代理从 SYSTEM 帐户运行。 SYSTEM 帐户环境变量与您用于测试的普通帐户不同。我怀疑 java.exe 不在 SYSTEM 帐户的 PATH 中。要么通过添加 JDK_HOME\bin 来调整 PATH,要么将代理服务配置为从不同的帐户运行。

    请记住,在对 PATH 的更改生效之前,您需要重新启动构建代理服务。

    【讨论】:

    • 路径添加到windows下用户账号的环境设置中。我似乎找不到任何地方可以在任何地方手动编辑这些构建代理设置..它们似乎是在其他地方预定义的。
    • 您可以通过 buildAgent.properties 文件通过定义 system.PATH 属性或通过 TeamCity UI 指定此构建配置的自定义环境来覆盖 PATH,有关详细信息,请参阅文档。从您的构建脚本中回显 PATH 以验证使用的实际值,检查是否可以使用此 PATH 值调用 java.exe。
    • 请记住,您需要重新启动构建代理服务,然后对 PATH 的更改才会生效
    • @JacoPretorius 你应该添加你的评论作为答案。
    【解决方案2】:

    您也可以在本地管理员帐户下运行您的构建代理服务(出于多种原因,这可能是首选),但 TeamCity 中存在一个错误,其中代理仅使用 USER 环境变量(例如 PATH) ,而不是 SYSTEM+USER 在 Windows 中正常。

    因此,如果您为用户定义了路径,则代理不知道系统路径!

    目前的解决方法(已验证)是将用户路径添加到系统路径并删除用户路径(在 System/Avanced System Settings/Environment Variables 下)。

    此处的错误和一个(截至 2012 年 1 月 29 日尚未解决): http://devnet.jetbrains.net/thread/276957

    【讨论】:

    • 这为我解决了问题。需要明确的是,修复了这个问题,确保我将用户环境变量“JAVA_HOME”设置为“C:\TeamCity\jre”。这是安装 Team City 时 jre 的默认安装路径。关键是用户环境变量,而不是系统。
    【解决方案3】:

    我们在普通用户帐户下运行代理。 Java 可以在交互式会话中找到,但不能在 TeamCity 构建中找到。我必须将 java bin 目录添加到用户的 PATH 变量中。注销/登录后,TeamCity 构建可以找到 java 命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 2015-05-24
      • 2019-03-16
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多