遇到这个问题,其实很多人就害怕了,根本找不到问题的原因…
JVM那可是一个遥不可攀的东西,我写Java的,JVM报错了我咋整?
首先,先排查一下你的环境是否按照规矩配置好了
估计是你的环境没有配置好,eclipse主要是通过JRE的运行环境来执行你的代码
右击项目名,找到properties属性:
1、点击Java Build Path,找到Libraries;
2、点击Libraries进入;
3、双击JRE System Library如下图所示。
File > Project Structure
一般情况下,SDKs都会随着变化,如果没变,你就手动点一下
Modules也一样
然后OK即可
需要知道,一般在java.lang包下的东西都与虚拟机挂钩,在修改了java.lang包下的一些代码后,需要重新编译,并且需要确保jvm在运行时不会调用这些方法,或者你在执行某个代码的方法不会被其他的类相互之间调用,如果出现相互之间调用的情况…就极有可能导致Java虚拟机无法初始化
比如,在ArrayList的构造方法中就不能随便添加System.out.println()
打印语句
一般…写写注释得了,别像我一样乱改…
这些rt.jar包下的代码,谁也不知道会不会出现什么特殊的情况
就比如我在java.util.ArrayList.java中的add方法添加了这么一行打印语句
在Test的main方法中创建了一个ArrayList对象
理论上,我没有调用add方法,应该不会执行add方法吧…
实际上,我运行之后发现…
原来在调用list.add()之前,ArrayList其实已经运行过N次了,只是咱不知道而已…
这是我之前修改了HashMap.java源码中的一些代码,结果就导致虚拟机起不来了,还好后面复原了
原谅我的无知…