代码之家  ›  专栏  ›  技术社区  ›  Mo B.

在.NET Core/Standard中作为预构建步骤运行java.exe失败,返回9009

  •  0
  • Mo B.  · 技术社区  · 5 年前

    我正在尝试在C-.NET Standard 2.0项目中运行java.exe作为预构建步骤。csproj文件包含以下代码段:

    <Target Name="Java" BeforeTargets="Build">
        <Exec Command="c:\Windows\System32\java.exe"/>
    </Target>
    

    (我简化了用于测试的命令行。)java.exe文件存在于c:\windows\system32中,但生成失败,错误代码为9009:

    c:\Windows\System32\java.exe' is not recognized as an internal or external command,
    1>operable program or batch file.
    1>C:\workspace\Test.csproj(21,5): error MSB3073: The command "c:\Windows\System32\java.exe" exited with code 9009.
    1>Done building project "Test.csproj" -- FAILED.
    

    直接从命令行运行java.exe可以正常工作。

    1 回复  |  直到 5 年前
        1
  •  0
  •   Mo B.    5 年前

    显然,C:\windows\system32被路由到另一个路径,因为Visual Studio是32位应用程序。使用特殊别名“sysnative”可以:

    <Target Name="Java" BeforeTargets="Build">
        <Exec Command="c:\Windows\Sysnative\java.exe"/>
    </Target>
    

    更多信息 here .