本文针对(由于jdk升级引起的)问题:
- Eclipse报错:Building workspace’ has encountered a problem
- VS Code报错:Main class ‘Main’ isn’t unique in the workspace
这两天由于打算重拾遗忘多年的java,从网上抄了个程序,结果里面用到var关键字了。我以前学的时候在电脑上装的是jdk8,大家知道jdk8是不支持var的,所以我就打算下载个jdk12。结果没想到,这个想法让我接下来两天都在痛苦地配置jdk、查stackoverflow中度过,受到上面说的两个问题的无尽折磨……好了,废话不多说了,下面就开始讲jdk升级的问题。
首先,安装了jdk8或者更低版本的jdk的话,一般会有如下环境变量(环境变量如何定义请自行查找其他文章):
JAVA_HOME:
C:\Program Files\Java\jdk-1.8.0
CLASSPATH:
.;%JAVA_HOME%\lib\tools.jar;
%JAVA_HOME%\lib\dt.jar;
path:
C:\ProgramData\Oracle\Java\javapath;
%JAVA_HOME%\bin;
%JAVA_HOME%\jre\bin;
如果缺少上文中提到的某个环境变量,建议各位先根据自己的安装路径加上。
那么如何升级到jdk12呢?首先下载jdk12,然后按照默认路径安装即可。接下来到安装路径看看,会发现找不到jre。其实没有jre似乎对命令行运行java和javac并没什么影响,但是诡异的是,没有jre可能会使得Eclipse和VS Code出现各种各样的问题,所以为了保险起见,我们还是生成jre为好,下面就是方法:
- 以管理员身份运行cmd命令行。
- 切换到jdk12的安装目录,执行下面这段代码:
bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
这样就得到jre了。然后就到了本文最关键的部分了,就是如何切换成jdk12而不让Eclipse和VS Code报错呢?步骤如下:
- 删除path里面与java相关的所有带Oracle的环境变量(如果你还装了除Java之外的Oracle产品,注意不要误删),比如上文提到的
C:\ProgramData\Oracle\Java\javapath;
。 - 将JAVA_HOME修改为你的jdk12安装目录,例如
C:\Program Files\Java\jdk-12.0.1
- 不要删除classpath!可能大家看到有的文章会说jdk8之后已经完全不需要classpath了,但是经过我亲身测试,即使装的是jdk12,删掉classpath仍然会使得Eclipse和VS Code各种报错!
接下来再打开Eclipse或者VS Code,就会发现成功切换到jdk12了,大功告成!
注意:
- 无需修改Eclipse和VS Code的任何配置!
- 本文仅按照作者这两天的配置经验写作,若有错误,还望小伙伴们多多批评指正。