昨天要新导入eclipse一个maven项目,由此重新配置了环境变量,maven的环境变量,以及因为有多个JDK版本造成的问题。
今天上班打开eclipse,结果弹出一个messagebox,报错“could not create the Javavirtual machine ”,然后发现应该是eclipse安装文件夹下的eclipse.ini文件中的内容配置有问题,内容如下:
-vmargs
-Xms512M
-Xmx1024M
-XX:PermSize=64M
-XX:MaxPermSize=128M
如果是因为内存等原因,修改一下上面的这些参数就可以了。
这些参数分别是什么意思呢?google一下:
-vmargs是表示下面是设置JVM(java虚拟机)的参数,也就是说下面都是java虚拟机的参数,对于JVM来说,内存分为堆内存和非堆内存,注意这里的堆不是c/c++里面的堆的概念,因为jvm自己管理内存,所谓堆上的内存就是jvm可以分配给java应用程序使用的内存。
由-Xms和-Xmx这两个参数限定,而非堆内存则是JVM自己使用的,由-XX:PermSize和-XX:MaxPermSize这两个参数来限定。对于堆内存来讲,JVM根据剩余的堆内存的多少调整整个堆内存的大小,调整范围就是-Xms(最小)和-Xmx(最大)指定的范围,-XX:PermSize和-XX:MaxPermSize也是同样的道理,如果你不想JVM来动态调整的话,可以把最大和最小值设置相等,默认最小值是物理内存的1/64,最大值是物理内存的1/4,所以这个最大值就受到物理内存的限制(当然还会收到操作系统的限制)。
经过实验发现,如果-Xms的值比-Xmx设置的大则启动会失败;而如果-Xmx和-XX:MaxPermSize设置的值的和比可用的物理内存还大,启动也会失败,我的第一个设置,两者的和超过了1G,而当时可用内存才700M,所以启动会失败,JVM在启动时会检测参数和实际可用内存。
但是结果还是不行!
后来看到有篇文章说删除 C:\Windows\System32 下面的三个 java.exe 、 javaw.exe 、 javaws.exe 文件,然后照做,
启动eclipse报 no java virtual machine was found after searching the following location
依旧不行。不过错误不一样了。
后来查询上面的这个提示信息,看到有文章说:
这是一个JDK没有配置好的问题。解决办法如下:
运行CMD。
在里面输入java -version看有没有版本的提示?有的话说明你的JDK是对的,那么就是Eclipse的问题了。没有参考其他方法。
1)如果没有的话:http://zhidao.baidu.com/link?url=zyswpWneAnFGk-doOEHoIO1owQR3uW9EK7vRI4-BNuSmLN0taQ9Zc18AQYWHohlNDotb1vHOgz5FsjumI5iaJa
依次点击:“我的电脑”-(右键)“属性”-“高级”-“环境变量”,弹出Windows的“环境变量”配置卡。
在“系统变量”栏下执行三项操作:
①新建“Java_Home”,值:JDK所在的绝对路径(例如 D:\Program Files\Java\jdk1.5.0_04\)。
②新建“Classpath”(如果已有,则直接编辑),值: .;%Java_Home%\lib (若值中原来有内容,用分号与之隔开)。
③新建“Path”(如果已有,则直接编辑),值: %Java_Home%\bin; (若值中原来有内容,用分号与之隔开)。
或者
CLASSPATH
C:\Program Files\Java\jdk1.6.0_03\lib;E:\workbench\lib\javax.servlet.jar;
JAVA_HOME
C:\Program Files\Java\jdk1.6.0_03
Path
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;%JAVA_HOME%\bin;
2)有的话:http://nigelzeng.iteye.com/blog/1585399
看了这个文章之后,又把删除的三个文件给恢复了。
继续报之前的错误。此文章继续继续解释说:
如果前面两个都没有问题,那就是路径的问题。
因为Eclipse需要javaw.exe来启动,程序会先查找path目录,如果没有找到,这会在eclipse的安装目录下查找,再找不到就会报如上的错误。
所以可以肯定的就是路径出问题了。来到eclipse的安装目录,找到eclipse.ini文件里的vm这行:
-vm 这个地方就是问题所在,检查下面的目录对不对,
我这里的问题就出在此,把C:/Program Files/Java/jdk1.7.0_25/bin改为C:/Program Files/Java/jdk1.6.0_25/bin
就可以顺利启动了。
参照: https://my.oschina.net/noday/blog/203987
这才找到了正题上,
-startup plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.400.v20160518-1444 -product org.eclipse.epp.package.jee.product --launcher.defaultAction openFile -showsplash org.eclipse.platform --launcher.defaultAction openFile --launcher.appendVmargs -vm C:\Program Files\Java\jdk1.8.0_91\bin\javaw.exe -vmargs -Dosgi.requiredJavaVersion=1.8 -XX:+UseG1GC -XX:+UseStringDeduplication -Dosgi.requiredJavaVersion=1.8 -Xms40m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=128M
因为我们的eclipse版本需要,需要配置1.8的jdk版本,中间修改的时候,因为程序用的是1.7,环境变量也都修改为1.7了。
这个地方也跟着写的1.7。
此处java版本以及路径都改为1.8即可。
问题终于解决。