查找VM并使用JNI调用API
Eclipse启动程序能够使用Java Native Interface Invocation API在eclipse进程中加载Java VM.启动程序仍然能够在与以前版本的Eclipse相同的单独进程中启动Java VM.使用哪种方法取决于VM的查找方式.
没有指定-vm
如果未指定-vm,则启动程序首先在eclipse的根目录中的jre目录中查找虚拟机,然后在搜索路径上查找.如果在任一位置找到java,则启动程序将查找相对于该java可执行文件的jvm共享库(Windows上的jvm.dll,*nix平台上的libjvm.so).
如果找到jvm共享库,则启动程序加载它并使用JNI调用API启动vm.
如果未找到jvm共享库,则启动程序将执行java启动程序以在新进程中启动vm.
-vm在命令行或eclipse.ini中指定
可以使用"-vm"启动Eclipse以指示要使用的虚拟机.价值有以下几种可能性:
directory: 是一个目录.我们在该目录中查找:
(1)java启动器或
(2)jvm共享库.
如果我们找到jvm共享库,我们使用JNI调用.如果我们找到一个启动器,我们会尝试在相对于启动器的已知位置找到一个jvm库.如果我们找到一个,我们使用JNI调用.如果没有找到jvm库,我们在一个新进程中执行java.
java.exe/javaw.exe: 是java启动程序的路径.我们执行java启动程序以在新进程中启动vm.
jvm dll左右: 是jvm共享库的路径.我们尝试加载该库并使用JNI Invocation API在当前进程中启动vm.