Golang运行报错找不到包:package xxx is not in GOROOT的解决过程

目录
  • 1 区分几个路径
  • 2 GO111MODULE
  • 3 解决方案
    • 方案一:关闭 go mod 模式
    • 方案二:使用go mod 模式
  • 总结

1 区分几个路径

  • GOROOT:Golang的安装路径,安装之后就默认自带了
  • GOPATH:Golang的工作目录

go_project // (go_project为 GOPATH目录)
– bin // golang编译可执行文件存放路径
– pkg // golang编译包时,生成的.a文件存放路径
– src // 源码路径。按照golang默认约定,go run,go install等命令的当前工作路径

出错:

导包运行时出错:package util is not in GOROOT (D:\MyApp\golang\src\util)只搜索GOROOT环境,而不搜索GOPATH路径

分析:

包管理的问题,import 包,会对应的出现包管理的问题,使用GOPATH问题

  • 代码开发必须在go path src目录下,不然,就有问题。
  • 依赖手动管理
  • 依赖包没有版本可言

应对包管理:go mod——GO111MODULE,go modules 是 golang 1.11 新加的特性。

模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。

2 GO111MODULE

GO111MODULE 有三个值:off, on和auto(默认值

  • GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
  • GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。依赖包的存放位置变更为$GOPATH/pkg,允许同一个package多个版本并存,且多个项目可以共享缓存的 module
  • GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:

当前目录在GOPATH/src之外且该目录包含go.mod文件

当前文件在包含go.mod文件的目录下面。

参看文章:go mod使用

3 解决方案

命令行使用go env 查看环境,明显GO11MODULE没有设定

方案一:关闭 go mod 模式

用 gopath 模式引入包从src目录下开始引入,需要

go env -w GO111MODULE=off

方案二:使用go mod 模式

go env -w GO111MODULE=on

并且在目录下执行 go mod init

目录下产生两个文件

go.mod
go.sum

否则就会报错找不到包

参考:package ‘xxx’ is not in GOROOT

总结

到此这篇关于Golang运行报错找不到包:package xxx is not in GOROOT解决的文章就介绍到这了,更多相关Golang运行报错找不到包内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • go run main.go 一直提示找不到包的解决方案

    如下所示: ./src/github.com/sirupsen/logrus/terminal_check_notappengine.go:9:2: cannot find package "golang.org/x/crypto/ssh/terminal" in any of 已经在对应的路径里从githup上面下载了对应的包了 https://github.com/golang/crypto 但还是提示这个错误 当时项目运行在 ~/go目录下,引入的包之间相互调用不到 当把项目移动

  • Golang运行报错找不到包:package xxx is not in GOROOT的解决过程

    目录 1 区分几个路径 2 GO111MODULE 3 解决方案 方案一:关闭 go mod 模式 方案二:使用go mod 模式 总结 1 区分几个路径 GOROOT:Golang的安装路径,安装之后就默认自带了 GOPATH:Golang的工作目录 go_project // (go_project为 GOPATH目录)– bin // golang编译可执行文件存放路径– pkg // golang编译包时,生成的.a文件存放路径– src // 源码路径.按照golang默认约定,go

  • IntelliJ IDEA 报错:找不到包或者找不到符号的问题及解决方案

     最近在使用IDEA的时候,突然出现过找不到包或者找不到符号的情况,在确定了自己引用存在的情况下,可以尝试以下几种方式来解决,以下是在开发过程中碰过问题同样解决过的几种办法,在此记录下也分享给大家,希望对各位有帮助. 1.利用Maven-Reimport 2.Invalidate and Restart 3.编码统一 4.重新编译  点开Project Structure 找到项目编译输出目录  将target目录下文件清空  右键项目重新build 5.利用Maven-Install  看到评

  • 解决anaconda安装pytorch报错找不到包的问题

    目录 前言 状况描述: 问题描述 解决办法: 前言 使用anaconda 命令安装pytorch包的问题,以下给出解决办法. 状况描述: 由于是第一次接触安装,看了很多篇文章,也遇到了一些坑,在此总结一下. 安装pytorch,从硬件上分为2个版本,一个是cpu,一个是gpu(显卡).gpu版本可以加速训练效果. 由于本人的电脑比较旧,显卡是rtx1050,我安装了cuda9.0版本+cudnn+pytorch(torch+torchvision) 本人安装的是gpu版本的,在这个过程中,走了一

  • maven引入本地jar包运行报错java.lang.NoClassDefFoundError解决

    目录 正文 maven引入本地jar的示例 配置maven将本地jar打入package中 maven打包知识分享 scope详解 正文 下文笔者讲述maven引入本地jar包时,运行报错"java.lang.NoClassDefFoundError"的处理方法分享,如下所示 今天在编写maven项目    导入本地jar包    部署到服务器上找不到包  报错信息如:java.lang.NoClassDefFoundError那么如何解决呢?   这种问题是由于,本地jar包在打包的

  • Idea跑的项目没问题将程序install成jar包运行报错空指针的问题

    在idea运行的程序导成jar包之后,执行程序会出现不一样的情况 首先idea运行是没问题的,我们断点看看: 然后install打包jar 以上就是实战中遇到的问题,我感觉很无奈,传入的数据是一样的,但为啥在idea中可以运行的程序使用jar包就出错了 然后我咨询了大佬,立马找到原因了 我把那段代码挪进main方法执行确实发现有些问题,然后百度了一下,最后修改成这样 重新打包jar居然成功了 总结 到此这篇关于Idea跑的项目没问题将程序install成jar包运行报错空指针的问题的文章就介绍到

  • 完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误

    报错信息 最近闲来无事,用python的tkinter库开发了一款带日程提醒的万年历桌面程序.在程序开发结束开始打包时,却发现一直报错 PyInstaller cannot check for assembly dependencies. Please install PyWin32 or pywin32-ctypes. pip install pypiwin32 但是运行pip install pypiwin32时却提示两个库都已经安装过了 可是当再运行打包脚本时就是死活无法打包,就是提示缺少

  • node.js缺少mysql模块运行报错的解决方法

    发现问题 在用node.js连接数据库,运行报错:cannot find module 'mysql: 然后 在管理员和用户下分别用npm安装数据库但是都是失败: 解决方法 按照错误日志应该是找不到文件夹,无法打开package.json这个文件,刚开始没有理解这个错误,最后我进入到project目录运行npm安装数据库成功: 在项目的modules下面也有这个模块了: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对

  • Javaweb工程运行报错HTTP Status 404解决办法

    最近在学习jsp和servlet,避免不了的要和tomcat打交道,但tomcat经常会出现各式各样的错误,下面是我总结的一些常见的解决方法,希望对大家有用. 1.未部署Web应用 2.URL输入错误 排错方法:首先,查看URL的IP地址和端口号是否书写正确.              其次,查看上下文路径是否正确 Project--------Properties------MyElipse-----Web-----Web Context-root检查这个路径名称是否书写正确.       

  • 解决springboot报错找不到自动注入的service问题

    springboot报错找不到自动注入的service 找了不少资料,最后发现是每个service接口(虽然已经使用了@service注解)的实现类都需要加上@service注解. 如果是使用junit生成的测试类,发现无法自动注入服务的话 在test启动类前加上 @RunWith(SpringRunner.class) @SpringBootTest @ComponentScan("com.XXX.service") 这是因为test包和启动类不在同一个包或子包下,无法自动注入 Sp

  • java报错:找不到或无法加载主类的解决方法简单粗暴

    当我们在windows系统下安装完jdk时,测试案例HelloWorld:运行java命令时报错:找不到或无法加载主类 解决方法: 1.首先检查是否编译通过,生成了.class字节码文件 如果没有生成.class字节码文件,则需要执行javac编译命令编译源文件. 执行命令javac H:\javatest\HelloWorld.java(javac表示jdk内置编译命令:H:\javatest\HelloWorld.java表示源文件所在路径,这里我的测试源文件是位于H盘下,自己决定) 2.如

随机推荐