之前一直把vscode当作一个sublime的强化版,仅仅把它当作一个编辑器而已。虽然一直也清楚这是一个很好的IDE,但却没有好好利用,可能是因为之前一直觉得IntelliJ IDEA已经满足了我的需求罢。直到最近,IDEA真的是变本加厉,只要一输入(拿着键盘随便乱敲),那么CPU就会暴增。cpu暴增一般情况下倒没什么所谓,反正没有超100就行吧(刚打开的时候还真的会升到100),可是我这破电脑只要CPU稍微高一点,风扇就开始呜呜呜地,像一台发电机。明天等待工具到了真的要把它拆开来除一下灰尘,但无论如何,IDEA过于臃肿已经是显而易见的问题了,还是需要认真考虑一下如何使用vscode吧。说实话,真的没想到我这么快就会想跟IDEA说再见,还记得当时刚开始学C++,非要听信那个菜比老师,用vs2010,体验极差,而我竟然用了两年多。大二的时候开始学Java,一开始是使用Eclipse,感觉也是比vs2010提升了一个档次。后来接触到了IDEA,真的是感觉神仙一样的软件,各种智能补全。当然了,中途还因为学数媒的原因,下载了一个vs2013,那个的体验其实也很好的,反正真的应该大一的时候就直接用vs2013,而不是那脑残的vs2010。总而言之,技术永远是在进步的,需求也是在增加的,对于用户,程序员,都是一样的。
其实还考虑过优化IDEA,但参照了一下网上的做法,无论是修改JVM参数,还是关闭所有代码检查,都无济于事。说实话,一开始也不抱什么希望,因为我是只要键入就会飙升,那真的不太行。然后开始搞vscode,突然想到了以前也尝试过,未遂。当时遇到的问题就是,它说我的JDK指向路径是空的,是version 0,可我指向的确切就是我一直使用的JDK8,我的IDEA都是在使用这个的。其实比较麻烦的是,我对vscode的各种参数,各种setting,包括快捷键,真的是几乎一无所知。当时仅仅也只是下载了几个plugins,当个普通的编辑器就完事了。最无奈的是,一直显示我没有配置JDK,或者准确地说应该是配置失败,但我直接使用一个Code Runner的插件时,直接使用alt+B就能成功运行了,可即便如此,还是不能直接点最上方的运行/ 调试,点了就报错。如果这个插件可以调试我可能就这样先暂时用着了,可是它似乎真的只能run,那只好继续处理。既然说是这个JDK有问题,那我便直接去下一个JDK吧,我下载了一个JDK12,修改了JAVA_HOME,重启电脑。结果发现java -version仍然是1.8。经过了许久的处理才发现,我以前在配置JDK的时候太过不求甚解了,导致遗留下来了很多错误。就是说,虽然这样做可以运行,但并不是正确的做法。比如JAVA_HOME其实就是用于存放JDK的一个路径,之后如果要放到ClassPath,或者Path等等的,都可以引用这个参数,%JAVA_HOME%,后面紧接着/bin,/lib等等的,差不多也就是可重用可维护了,以后如果要换JDK,直接改JAVA_HOME就行了。可我当时在ClassPath里使用了这个参数,在Path里却没有,说明当时根本就没有理解这个参数的作用。然后我把Path的绝对路径改成了JAVA_HOME,发现仍然不行。再仔细一看,原来这个根本就没有用上,因为上面还有3个不知道是什么的JavaPath,有什么AdoptOpenJDK,有Oracle commons files等等。在一台电脑上如果存在多个JavaPath,那么是最上方(win7应该就是最左方)的生效。所以我一直以为整台电脑都使用了的E盘的library下的JDK,原来根本就没有,我的环境变量竟然一直是OpenJDK,也就是说classpath跟path使用了两个不同的JDK罢了。把以前的蜜汁path都去掉之后,再把自己新增的%JAVA_HOME%/bin移动到了最上方,这下总算就成功了,java -version也成功改成了12。那么IDEA里一直用的1.8,会不会因此不能运行?答案是不会,因为IDEA根本就不需要环境变量的那个Path参数,那个是在cmd里,全局里生效的,相当于IDEA是在本地自己使用了另一个JDK。我一开始觉得JDK有点奇怪,使用java -verbose查看JDK路径,我还好奇为什么会是在C盘的一个OpenJDK里,原来是当时留下的各种错误啊。
JDK总算配置好了,但vscode依然不能运行,显示不能找到主类。这会我又没有动脑子,直接去改参数瞎搞。其实这个问题我在看编程思想的第一章就应该碰到过了,因为vscode毕竟不是传统的IDEA,它本体就是一个编辑器,非常轻量级,只有40M,但它可以通过各种plugins来增强功能罢了。因此,可能就是vscode确实就是直接使用环境变量里的ClassPath跟Path,直接命令行运行程序的,而IDEA这种还有更多的改进。那么直接在cmd里编译运行java程序会有一个什么经典的问题呢,就是package。最开始学java 的时候都尝试过cmd里编译运行,结果有一天会发现,自己明明第一个程序在cmd里是可行的,但在eclipse或者IDEA把代码复制过去便是找不到主类的。唯一的区别便是package,package其实就是一个文件夹,对于javac,java命令,这个还没智能到直接跳入到相应的位置去执行正确的文件,所以当时我们的解决方案是这样的,直接删掉package语句,然后就可以运行了,但显然并不是长远之计,难道以后写的程序都不加package了吗?于是正经的方案是这样的,给命令增加一个-d参数,还有一个什么什么的,忘记了,然后就可以根据package语句进入相应的路径去执行正确的文件了。所以,在vscode里也是要对基本的命令进行修改,比如默认是java test,那么就改成 java -d …… test。所以最后是在settings里增加这段代码:
进入相应的$dir,然后再进行javac跟java,那么就大功告成(看起来还是跟-d有所区别的)至于其他的注释,便是针对其他的语言,这里无须理会。最后把vscode进行reload,程序就成功运行了。