您的位置:首页 > 编程语言 > Java开发

"could not create the java virtual machine"启动eclipse报错

2017-08-20 22:37 603 查看
转自: http://blog.csdn.net/qq_35284255/article/details/53282280
昨天要新导入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这行:我这里的问题就出在此,把C:/Program Files/Java/jdk1.7.0_25/bin改为C:/Program Files/Java/jdk1.6.0_25/bin
就可以顺利启动了。注意到bin目录就行,不用到javaw.exe
这才找到了正题上,
-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即可。

问题终于解决。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息