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的启动参数中加入如下参数:

  1. -Djava.util.Arrays.useLegacyMergeSort=true  
-Djava.util.Arrays.useLegacyMergeSort=true

这样就会照旧使用JDK6的排序算法,在不能修改代码的情况下,解决这个兼容的问题。