我有一个JRE,C:\Program Files (x86)\Java\jre6这是我安装Eclipse时唯一的一个.我随后安装了一个完整的JDK C:\home\SFTWR\jdk1.6.0_21并将我的JAVA_HOME环境变量更改为.但是,每次我启动一个新的Eclipse工作区时,它只会选择旧的JRE,我必须手动删除它并添加新的JRE.
如何将Eclipse安装绑定到新JDK,以便每个新工作区仅指向该JDK?我查了eclipse.ini但是没有参考JRE去哪里.
更新:
我进入了Prefs->Java->Installed JREs,添加了新位置,将其标记为默认位置,删除了另一个位置,并且仅对当前工作空间有效.但是,当我打开一个新工作区时,只有旧的JRE可用.因此,这并没有改变适用于所有(至少是新的)工作空间的核心Eclipse配置
amp*_*ent 25
最后得到它: Eclipse选择JRE的方式是使用系统的PATH.
我之前完全没有C:\home\SFTWR\jdk1.6.0_21\bin这条路,而且我确实拥有过C:\Program Files (x86)\Java\jre6\bin.我有两个JRE_HOME并且JAVA_HOME设定,C:\home\SFTWR\jdk1.6.0_21但这两个都不重要.我猜的Eclipse做了(某事的影响),其中的Java(或它在UNIX/Linux)上看到Java是路径,把到了JRE java.exe属于.在我的情况下,尽管我已经完成了所有配置调整(包括eclipse.ini上面建议的-vm选项),但它仍然坚持路径中的内容.
我从路径中删除了旧的JRE bin,将新的JRE bin放入其中,它适用于所有工作区.
see*_*ker 15
打开Java> Installed JREs首选项页面.选中要在工作台中指定为JRE的JRE行的框.如果要指定为默认的JRE未显示在列表中,则必须添加它.单击确定.
gam*_*son 13
已安装的JRE用于为下游Java项目和服务器执行的JRE.至于用于执行Eclipse进程(工作台)本身的JVM或JRE,它由您的环境,历史记录和eclipse.exe二进制文件控制.所以eclipse.exe本身决定JRE Eclipse将自己执行什么,而不是安装JREs首选项,因为在选择JVM/JRE之后加载OSGi框架并且正在运行之前不会读取这些首选项.
因此,对于新的工作空间,Eclipse将使用其当前正在执行的JRE来填充JRE首选项.
我知道如何强制eclipse.exe使用你通过-vm交换机告诉它的JRE的最好方法.所以在你的eclipse.ini中这样做:
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-vm
/path/to/exactly/what/jre/you/want/as/default/javaw.exe
...
Run Code Online (Sandbox Code Playgroud)
小智 5
我的答案将与amphibient重叠,同时加入它.
您的JAVA_HOME变量很好,但您还需要将以下内容附加到Path变量:
;%JAVA_HOME%\bin
Run Code Online (Sandbox Code Playgroud)
这将允许Windows环境中的应用程序访问您的JDK.一旦添加了这些环境变量,您还应该重新启动计算机,然后再检查它们是否有效.在我的情况下,即使退出然后重新登录也不起作用:我必须完全重启.
如果要检查环境变量是否设置正确,可以打开命令提示符并键入> echo %JAVA_HOME和> echo %Path%以查看这些变量是否正常工作.在窥探解决方案时,我还遇到了一些人声称他们需要在环境变量周围添加引号(")以使它们正常工作("%JAVA_HOME%"\bin),如果你的JAVA_HOME路径包含空格.我认为这是我的情况,但在完全重启后,我的变量似乎正常工作,没有引号,尽管空格.
我在那里Eclipse并没有使用我目前遇到了类似的问题%JAVA_HOME%,这是对的path,并而不是使用旧版本.文档指出,如果-vm在ini文件中没有指定,eclipse将搜索共享库jvm.dll 这在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment使用windows java安装程序时安装的密钥下的注册表中显示(密钥可能会因64位而略有不同) vs 32位,但搜索jvm.dll).因为它在我path之前找到了这个共享库%JAVA_HOME%/bin,所以它使用的是旧版本.
与其他人所说的一样,处理此问题的最简单方法是指定要在eclipse.ini文件中使用的特定vm .我写这篇文章是因为我无法弄清楚它是如何在未在文件path或eclipse.ini文件中指定的情况下使用旧版本.
请参阅以下文档的链接:http: //help.eclipse.org/kepler/topic/org.eclipse.platform.doc.isv/reference/misc/launcher.html?cc = 2_1_3_1
查找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.
| 归档时间: |
|
| 查看次数: |
127718 次 |
| 最近记录: |