分享

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

 崋果山 2017-10-17

 昨天要新导入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./blog/1585399

看了这个文章之后,又把删除的三个文件给恢复了。

继续报之前的错误。此文章继续继续解释说:

如果前面两个都没有问题,那就是路径的问题。

因为Eclipse需要javaw.exe来启动,程序会先查找path目录,如果没有找到,这会在eclipse的安装目录下查找,再找不到就会报如上的错误。

 

所以可以肯定的就是路径出问题了。来到eclipse的安装目录,找到eclipse.ini文件里的vm这行:

Java代码 复制代码 收藏代码
  1. -startup   
  2. plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar   
  3. --launcher.library   
  4. plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502   
  5. -product   
  6. org.eclipse.epp.package.jee.product   
  7. --launcher.defaultAction   
  8. openFile   
  9. --launcher.XXMaxPermSize   
  10. 256M   
  11. -vm   
  12. C:/Program Files/Java/jdk1.7.0_25/bin   
  13. -showsplash   
  14. org.eclipse.platform   
  15. --launcher.XXMaxPermSize   
  16. 256m   
  17. --launcher.defaultAction   
  18. openFile   
  19. -vmargs   
  20. -Dosgi.requiredJavaVersion=1.5  
  21. -Xms128m   
  22. -Xmx512m  
  1. -startup  
  2. plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar  
  3. --launcher.library  
  4. plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502  
  5. -product  
  6. org.eclipse.epp.package.jee.product  
  7. --launcher.defaultAction  
  8. openFile  
  9. --launcher.XXMaxPermSize  
  10. 256M  
  11. -vm  
  12. C:/Program Files/Java/jdk1.7.0_25/bin  
  13. -showsplash  
  14. org.eclipse.platform  
  15. --launcher.XXMaxPermSize  
  16. 256m  
  17. --launcher.defaultAction  
  18. openFile  
  19. -vmargs  
  20. -Dosgi.requiredJavaVersion=1.5  
  21. -Xms128m  
  22. -Xmx512m  
 

-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即可。

问题终于解决。



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多