idea提示git is not installed与“meaningless REX prefix used”

记一次遇到idea提示“git is not installed”问题时的解决过程

我自己的笔记本上面的idea和git都安装挺久了,只是一直没有在idea上用git下载过东西。前两天准备学习spring源码,照着教程开始下载和编译源码,这时idea右下角突然蹦出气泡弹窗,提示git未配置,让我安装git。点击file-settings,搜索git,在version control-git项下,确实有如下提示:git is not installed
在这里插入图片描述
idea自动检测到的地址确实是git的安装地址,点击右边的test,检测结果仍然是git is not installed。

我当时安装的git是2.29,发布时间是2020年下半年,而idea是2020.1,所以我怀疑可能是git的版本太高,idea不支持造成的,因为之前用maven的时候出现过类似的问题。
于是我点击旁边蓝色的download and install,让idea自动下载并安装了一个2.24版本的git。idea自动下载的git总不会有问题了吧?然而问题依旧。

没办法,我只能尝试手动指定git.exe的位置。
点击test旁边的文件夹图标,选择C:\Program Files\Git\cmd\git.exe,点击test,问题依旧。
再选择C:\Program Files\Git\bin\git.exe,点击test,问题依旧。
再选择C:\Program Files\Git\cmd\git-gui.exe,点击test,问题依旧。
idea提示git is not installed与“meaningless REX prefix used”_第1张图片
但是这时,git弹出了一个对话框——
Cannot parse Git version string:
ANOMALY: meaningless REX prefix used git version 2.24.1.windows.2
idea提示git is not installed与“meaningless REX prefix used”_第2张图片
这下,我灵光一闪。其实之前在cmd窗口执行一些命令时,出现[ANOMALY: meaningless REX prefix used]这个提示的问题已经困扰我很久了,比如用javap命令查看字节码时,用idea运行一些java代码时,都会在cmd窗口或者idea控制台打印这个提示。因为之前只是烦人,也就一直没处理,但是这次弹框里的提示,把“[0x7FFEF7987EA0]ANOMALY: meaningless REX prefix used”和“git version 2.24.1.windows.2”连在一起了,这会不是就是idea明明能自动检测到git的安装目录,但是却不能正确地识别git的原因? 因为idea很可能就是用git --version之类的命令从cmd获取到“git version 2.24.1.windows.2”这样的字符串,再加以解析获取的git的版本,由于前面被拼上了“ANOMALY: meaningless REX prefix used”,导致解析出错,才使得idea无法正确识别git。

抱着这个想法,我尝试在cmd窗口执行命令

git --version

果然在git版本号之前出现了两行这样的提示:

[0x7FFEF7987EA0]ANOMALY: meaningless REX prefix used

不过奇怪的是,执行

java -version

在前面却没有这样的提示。

暂时先不去探究这种区别中间的原理,总之现在的问题变成了如何去掉这行恼人的提示
求助百度,结果有一篇搜索结果靠前的文章说“用360 各种修复。各种操作,cmd 没有那串东西咯”。
无力吐槽他说的“各种修复”到底指什么,抱着司马当活马医的心态,先装个360试试,结果忍受了各种弹框,乱改我的默认软件等一系列问题之后,我先后用360清理了缓存、清理了注册表,又更新了各种驱动,清理了各种浏览器插件,电脑评分达到100分喽! 然而果然不出我所料,这一通清理并没有什么卵用,cmd窗口那个提示还在,idea仍然不能识别git。在360一通哀求之后我仍然毫不留情地卸载了360。

继续搜索,又找到了这篇文章。技术流,但是对我来说太复杂了,我不确定自己能不能搞定,如果把电脑整出其它的问题来就完蛋了,只能放弃。

后来不记得是通过谷歌还是百度,搜到了国内网站转载外网的这么一篇文章,里面有提到这么一句话:“meaningless” message会破坏java、node.js的版本字符串的解析,侧面印证了我前面的分析。

Random libraries using printf() to write to the console (stdout) are a terrible, terrible idea. In fact it’s a monumentally stupid idea. That’s not a problem with the mhook library perse, it’s the fault of whoever used it in a product and configured it that way (like Raptr and others).
It’s not just that incomprehensible (to most users) messages with no context are annoying, they are actively harmful. The “meaningless” message is known to have broken version string parsing for Java and node.js, and almost certainly caused problems elsewhere

文中最后总结道:

The unexpected “ANOMALY: meaningless REX prefix used” message and several similar “ANOMALY” messages come from the open-source mhook library, which is a generic library used for API hooking; the message is specific to 64-bit systems. Several products use the mhook library, including but not limited to Raptr aka Gaming Evolved (shipped with AMD Radeon and possibly other graphics drivers) and some versions of the AVG anti-virus software.

就是说造成“meaningless”提示的原因是某些软件使用的开源库,比如AMD的显卡驱动、某些版本的AVG(一个杀毒软件)等。

虽然我的笔记本用的是N家的MX150,电脑上也没装AVG,但是这句话提醒了我,或许是我电脑上装的其它软件也用了类似的开源库,造成了这个问题——这也是为什么在网上搜索这个提示的时候,有那么多人遇到同样的问题,却没有一个明确的解决办法的原因,因为虽然大家遇到的是同一个问题,但是由于大家电脑上装的软件五花八门,所以造成这个问题的软件肯定不是同一个,解决办法自然各不相同。但是解决问题的思路应该是相同的,就是卸载导致这个问题的软件

因为显卡驱动、杀毒软件都是相对底层或者需要操作系统底层的软件,所以我的怀疑对象首先指向了类似VPN、虚拟机、沙盒类等软件。
然后在控制面板-卸载或更改程序里一个个找,果然找到了一个叫XXXX sandbox的软件,这是之前疫情在家办公时,装公司VPN的时候捆绑安装的一个软件,后来恢复现场办公了,VPN卸载了,这个软件却没有被一同卸载。将其卸载之后,再次在cmd输入 git --version:
idea提示git is not installed与“meaningless REX prefix used”_第3张图片
烦人的“meaningless”提示没有了!
打开idea,点击test:
idea提示git is not installed与“meaningless REX prefix used”_第4张图片
2.24.1正是之前idea自动下载的git版本,问题解决!

你可能感兴趣的:(问题汇总,java,idea,windows,git)