1、今天开发环境运行的时候出现下面问题
The project cannot be built until build path errors are resolved.
出现报错情况,之前也没有遇到过。
根据字面意思“在解决生成路径的错误之前,无法生成项目”,也就是说项目的路径位置配置错误,或者是所需要的某个或者某些jar包配置路径有误。
后来采用下面方法解决:
首先确保project->Build Automatically已经勾选上,然后project->clean。如果刷新之后没有效果,请重启STS。
2、下载一个学习的项目,在运行npm install时出现下面错误
gyp verb `which` failed Error: not found: python2相关错误,主要包括npm install时出现gyp verb `which` failed Error: not found: python2相关错误,特别是python2相关错误,但实际上我们也没有用到也不可能过去安装它。
文字版错误日志
经过资料查询,推测是NodeJS和node-sass版本不匹配的问题:
| NodeJS | Supported node-sass version | Node Module | |---------|-----------------------------|-------------| | Node 16 | 6.0+ | 93 | | Node 15 | 5.0+ | 88 | | Node 14 | 4.14+ | 83 | | Node 13 | 4.13+, <5.0 | 79 | | Node 12 | 4.12+ | 72 | | Node 11 | 4.10+, <5.0 | 67 | | Node 10 | 4.9+, <6.0 | 64 | | Node 8 | 4.5.3+, <5.0 | 57 | | Node <8 | <5.0 | <57 |
执行node --version指令,本机node版本为v16.16.0
查看项目的package.json,devDependencies中node-sass版本是4.12.0
根据上面的表格,确实存在不匹配。
npm i node-sass@6.0.1 后就正常了
3、有时候线上出现下面的错误,通过增加下面一行代码就解决
//Comparison method violates its general contract!有时候出现这个错误加的,原因不明
System.setProperty("java.util.Arrays.useLegacyMergeSort", "true");
那么问题来了。为什么上面代码在JDK6中运行无问题,而在JDK7中却会抛异常呢?这是因为JDK7底层的排序算法换了,如果要继续使用JDK6的排序算法,可以在JVM的启动参数中加入如下参数:
- -Djava.util.Arrays.useLegacyMergeSort=true
-Djava.util.Arrays.useLegacyMergeSort=true
这样就会照旧使用JDK6的排序算法,在不能修改代码的情况下,解决这个兼容的问题。