好吧,我想我终于在没有更多想法或帮助的情况下坚持尝试了。我正在尝试使用
https://github.com/billgraziano/go-windows-svc/blob/master/cmd/gosvc/main.go .
我将其克隆过来并根据自述文件进行了调整。这是假设启动服务。该服务正在运行我们称之为 DCA 的东西,它可以启动服务器。所以我什至还没有开始调试其他问题。问题是在尝试构建时我得到了
PS C:\Users\rutger\go\src\go-windows-svc\cmd\gosvc> go build main.go
main.go:10:2: cannot find package "bitbucket.org/somepalce/go-dca-base/cmd/dca-agent/main.go" in any of:
c:\go\src\bitbucket.org\someplace\go-dca-base\cmd\dca-agent\main.go (from $GOROOT)
C:\Users\rutger\go\src\bitbucket.org\somepalce\go-dca-base\cmd\dca-agent\main.go (from $GOPATH)
这是他程序中的主要部分,但第一个导入相对于我的路径进行了调整。 包主
import (
"bitbucket.org/someplace/go-dca-base/cmd/dca-agent/main.go"
"github.com/pkg/errors"
)
windows服务项目的文件结构
C:\USERS\RUTGER\GO\SRC\GO-WINDOWS-SVC
├───app
└───cmd
└───gosvc
-- (has the main)
DCA 的文件结构
C:\USERS\RUTGER\GO\SRC\BITBUCKET.ORG\SOMEPLACE\GO-DCA-BASE\CMD\DCA-AGENT
├───cmd
-- (has main for DCA)
├───compile
└───logs
PS C:\Users\rutger\go\src\go-windows-svc\cmd\gosvc> go build main.go main.go:10:2: 在以下任何一个中找不到包“bitbucket.org/somepalce/go-dca-base/cmd/dca-agent/main.go”: c:\go\src\bitbucket.org\somepalce\go-dca-base\cmd\dca-agent\main.go(来自 $GOROOT) C:\Users\rutger\go\src\bitbucket.org\somepalce\go-dca-base\cmd\dca-agent\main.go(来自 $GOPATH) PS C:\Users\rutger\go\src\go-windows-svc\cmd\gosvc>
go env 的输出 PS C:\Users\rutger\go\src\go-windows-svc\cmd\gosvc> 去环境
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\rutger\AppData\Local\go-build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\rutger\go
set GOPROXY=
set GORACE=
set GOROOT=c:\go
set GOTMPDIR=
set GOTOOLDIR=c:\go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\rutger\AppData\Local\Temp\go-build634488178=/tmp/go-build -gno-record-gcc-switches
我阅读了堆栈中的其他问题及其要求:\n
Cant find package from $GOROOT and $GOPATH\n
https://forum.golangbridge.org/t/go-build-cant-find-package/11880/10\n
Cant find package from $GOROOT and $GOPATH
因此,我们将不胜感激任何帮助。我认为添加 vendor 不会有任何问题,因为所有路径看起来都很好。
最佳答案
您导入的 bitbucket.org/printtrackerpro/go-dca-base/cmd/dca-agent/main.go
无效,原因有二:
- 在 Go 中导入包,而不是文件
- 根本不能导入
main
包,因为main
是程序的入口点,不允许循环依赖
关于走吧,路很崎岖。感谢帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57210977/