You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言exec调用hangman.go/编译后exe提示可执行文件不在$PATH问题

问题根因

你当前代码中exec.Command传入的参数是源码文件hangman.go,系统无法将Go源码文件识别为可执行程序,哪怕你已经编译出了hangman.exe,只要代码里调用的文件名没改,就会继续报找不到可执行文件的错误。

解决步骤
  • 方案1:直接调用编译好的可执行文件
    修改server.go中的exec.Command参数,指向你编译好的hangman.exe:

    // 如果hangman.exe和server程序在同一目录
    cmd := exec.Command("./hangman.exe")
    

    如果hangman.exe不在当前运行目录,你可以写完整的绝对路径,比如:

    cmd := exec.Command("C:/projects/hangman/hangman.exe")
    

    也可以将hangman.exe所在目录加入系统PATH环境变量,此时直接写文件名即可:

    cmd := exec.Command("hangman.exe")
    
  • 方案2:不提前编译,直接通过go run执行源码
    如果你不想每次修改hangman代码都重新编译,可以调用go命令执行源码,注意要把go和run作为单独的参数传入:

    cmd := exec.Command("go", "run", "./hangman.go")
    

    该方案需要你的系统PATH中已经配置了Go的安装路径。

附加提示

如果hangman游戏需要交互输入、需要在控制台打印内容,你还需要将命令的输入输出绑定到当前进程,避免看不到游戏输出、无法输入操作的问题,修改后的完整代码如下:

package main

import (
    "log"
    "os"
    "os/exec"
)

func main() {
    // 这里替换为你选择的方案对应的exec.Command参数
    cmd := exec.Command("./hangman.exe")
    
    // 绑定输入输出
    cmd.Stdin = os.Stdin
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr

    err := cmd.Run()
    if err != nil {
        log.Fatal(err)
    }
}

内容的提问来源于stack exchange,提问作者Esteban

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:06:06