聊聊Go语言编译github上的项目遇到的坑

最近转行Go语言服务端,老大写了个很复杂的框架,并且没有文档。在读取源代码的时候,很是痛苦,记忆力不咋地,记不住东西,于是乎想出了通过源代码创建UML类图的办法。C++和JAVA都有类似的工具软件,但是Go语言只有通过github上的一个开源项目来搞。

中间遇到了很多坑,于是乎记下这篇文章。

首先根据网上的文章,搞这个项目的第一步是go get **********(项目路径),但是第一步就没迈出去,各种报错

下面就是错误列表:

package git.oschina.net/jscode/go-package-plantuml: unrecognized import path "git.oschina.net/jscode/go-package-plantuml" (parse https://git.oschina.net/jscode/go-package-plantuml?go-get=1: no go-import meta tags (meta tag gitee.com/jscode/go-package-plantuml did not match import path git.oschina.net/jscode/
go-package-plantuml))

package gitee.com/jscode/go-package-plantuml.git: cannot download, git://gitee.com/jscode/go-package-plantuml uses insecure protocol

package https:/gitee.com/jscode/go-package-plantuml.git: https:/gitee.com/jscode/go-package-plantuml.git: invalid import path: malformed import path "https:/gitee.com/jscode/go-package-plantuml.git": invalid char ':
go: missing Git command. See https://golang.org/s/gogetcmd

然后上网差各种资料,仍然解决不了。

后来看了一篇博客,这位大佬用的是git clone(其实之前我也想过用git clone,但卡在了后续编译错误上,让我以为是go get获取的项目做了特殊处理),这位大佬说:其实go get 和git clone其实干的事儿都差不多,g前者唯一做的特殊处理是存放路径不同罢了。

至于是什么路径我也不是很清楚。好吧,大佬给我喂了这ke定心丸,我把项目git clone下来了,然后又卡死在了编译上。

下面是我遇到的错误之一:

好多其他的错我让我给清屏干掉了,就留下了这么一个。其实我的大部分错误都是Go语言那三个环境变量没整对。GOPATH、GOROOT和PATH环境变量的问题。

GOPATH可以认为是项目的存放路径(即工作路径),不知道我这么理解正不正确,若不正确,哪位懂得请指出我的错误,但是这么理解好像项目是能正常工作的

GOROOT就是Go语言的安装目录,只能设为 *:/Go ,* 表示的是盘符。但是手贱不知道怎么改成了Go/bin,结果在编译时候命令行提示找不到项目,然后出错路径很奇葩,里面有两个bin,即路径变成了**/bin/bin/***,这能找到才怪了。

Path这个是系统环境变量,需要在GOROOT的基础上加上/bin。

然后变异的时候还是报错,说项目在指定路径下找不到需要的包或者文件,其实这个还是涉及到路径的问题。

我的解决办法是把那些找不到路径的包全给拷到 */Go/src/目录下,然后去修改报错的代码行处,但是即使是这样有些文件还是找不到,我又想出了修改import的路径,直接改成相对路径。

这样我的这个项目总算是编译成功了。相对路径可能有的代码不好使,老大说建议都放到工作路径下的src目录下或者是Go的安装目录下的src文件夹中。

更正:注意别使用相对路径,否则编译成功后的exe在执行期间会出幺蛾子

后来我发现我加目录就是多次一举,原项目之所以编译时报错是因为我压根儿就没有配置项目路径(没有讲项目路径加到GoPath中),配置好项目的GoPath路径之后,直接编译就能成功。

而且,如果不配置项目路径到GoPath,仅仅只是像我第一种方法那样解决了编译错误,运行时也会报错(这真是个悲伤的故事,我已经开始在Goland里面手动画UML类图了),生成不了UML文件,命令行提示生成成功,但是路径下就是找不到生成文件,因为实际上就是没有生成,路径没配置对

补充:Go语言 使用Golang导入github的项目的时候出现Cannot resolve directory 'github.com'

在学习go语言过程中从github下载了几个项目,但是使用golang通篇报红,GOPATH反复检查没有设置错,各种方法都找遍了,最终解决了记录一下。

解决办法

在golang的设置里面将图中这个勾去掉

原因

原因是Goland 编辑器中项目设置为 go modules 项目,导致从gomod读取,从而报错,去掉勾,问题完美解决。

(0)

相关推荐

  • 聊聊Go语言编译github上的项目遇到的坑

    最近转行Go语言服务端,老大写了个很复杂的框架,并且没有文档.在读取源代码的时候,很是痛苦,记忆力不咋地,记不住东西,于是乎想出了通过源代码创建UML类图的办法.C++和JAVA都有类似的工具软件,但是Go语言只有通过github上的一个开源项目来搞. 中间遇到了很多坑,于是乎记下这篇文章. 首先根据网上的文章,搞这个项目的第一步是go get **********(项目路径),但是第一步就没迈出去,各种报错 下面就是错误列表: package git.oschina.net/jscode/go

  • 配置Git并从GitHub上克隆项目

    一.配置Git: 1.对于首次安装git的机器,一定要首先进行用户账户信息的配置: git config --global user.name "你的github用户名" git config --global user.email "你的github邮箱地址" 2.右键单击桌面空白处,选择Git Gui Here 3.进去之后,选择左上角的help选项,会出现一个Show SSH Key 4.然后点击“Generate Key”得到秘钥,将其复制到剪切板 5.打开

  • GitHub上值得推荐的8个python 项目

    GitHub 无疑是代码托管领域的先行者,Python 作为一种通用编程语言,已经被千千万万的开发人员用来构建各种有意思或有用的项目.以下我们会介绍一些使用 Python 构建的GitHub上优秀的项目. 1. Manim GitHub链接: https://github.com/3b1b/manim B站链接:https://space.bilibili.com/88461692 Manim 是一个说明性数学动画引擎,使用 manim你可以创建动画视频,还可以控制用于插图和图表的动画. 这个项

  • idea2020.1版本git提交项目到github上的方法

    idea使用git将项目提交上远程仓库 1.在idea装好git的插件 找到file>settings>Version Control> 3.创建仓库 4.添加到缓存区 5.添加到本地仓库 6.提交到远程仓库 到此这篇关于idea2020.1版本git提交项目到github上的方法的文章就介绍到这了,更多相关idea2020.1 git提交到github内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • 如何把本地idea上的项目上传到github上(推荐)

    注意看标题 是 上传到github上,所以你的github地址是 : github.com 而不是其他的. 1.在github中创建一个账号:https://github.com/join?source=header-home 2.下载并安装git:https://git-scm.com/downloads 3.安装成功后打开Git Bash,输入下列命令,设置git全局用户名和邮箱 $ git config --global user.name "Your Name" $ git c

  • GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析

    目录 前言 一.Axios 简介 二.HTTP 拦截器的设计与实现 2.1 拦截器简介 2.2 任务注册 2.3 任务编排 2.4 任务调度 三.HTTP 适配器的设计与实现 3.1 默认 HTTP 适配器 3.2 自定义适配器 四.CSRF 防御 4.1 CSRF 简介 4.2 CSRF 防御措施 4.2.1 检查 Referer 字段 4.2.2 同步表单 CSRF 校验 4.2.3 双重 Cookie 防御 4.3 Axios CSRF 防御 五.参考资源 总结 前言 Axios 是一个基

  • R语言编程学习从Github上安装包解决网络问题

    目录 1. remotes 包安装 2. devtools 包安装 3. 从 gitee.com 上安装 4. 离线安装 1)先从 GitHub 上 下载 zip 压缩文件: 2)在本地 R Studio 上进行安装: 当我们想使用 R 安装一些 Github 相关的软件包,经常会遇到或者或那的网络问题,此时我们需要怎么做呢? 以最近大家分析疫情数据经常用的 Y叔的 nCov2019 包为例,通常我们可以使用如下的尝试顺序: 1. remotes 包安装 install.packages("re

  • 使用Git Bash向GitHub上传本地项目

    1.初始化本地仓库 在项目文件夹下打开Bash,输入命令: git init //初始化本地仓库 2.新增加测试文件 输入命令: touch 测试文件.txt //新建文件 3.添加文件到本地仓库 输入命令: git add . //添加所有文件到本地仓库 4.提交所有文件 输入命令: git commit -m "git测试" //提交到本地仓库 5.切换分支 输入命令: git checkout -b main //-b 表示这个分支不存在,会新建 myProject_v1.0 分

  • C语言学生信息管理系统小项目

    本文为大家分享了C语言学生信息管理系统小项目,供大家参考,具体内容如下 /* 运行环境:我是在linux里面用gcc编译的,在windows里应该也能运行,用的一些文件库函数都是c标准库,没有用linux的系统调用(纠正一下:system("clear")这个系统调用是linux的,windows里面用system("cls") ) (1)问题描述 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等.试设计一学生信息管理系统,使之能提供以下功

  • 手动编译并运行Java项目实现过程解析

    现在Java开发基本上就是IDE调试,如果跨平台打个jar包过去运行一般就可以了,但是有些情况比如需要引入外部依赖的时候,这个时候是不能直接运行的,还需要引入一些外部的参数,并不是简单的javac和java的关系了,下面来详细说一下 一般情况下,在本地都是使用eclipse开发工具进行开发,很多东西基本上就不用我们考虑了,如果我们要将项目放到Linux下运行的话,那么就需要进行转移的操作,当然有Maven.Ant这样的自动化部署工具,简直是太方便了,为了做到更进一步认识的话,我们纯手动的去打包一

随机推荐