同时在JAVA_HOME上运行JDK 32位和64位

时间:2015-01-20 19:04:55

标签: java windows-8.1

我在Windows 8.1中使用smartGIT,它使用32Bit JDK(1.8),我需要将JAVA_HOME设置为32bit目录

但现在我正在使用需要JDK 64位(安装了1.8)的Android Studio,我需要设置指向64位目录的JAVA_HOME

有没有办法在同一个变量上设置它们,并且取决于软件是否需要JDK 32或64可以选择适当的框架???

我尝试通过像这样的半结肠分开它们来同时设置它们

JAVA_HOME

C:\Program Files\Java\jdk1.8.0_25\;C:\Program Files (x86)\Java\jdk1.8.0_25

但这只适用于32BIT版本,64BIT仍然无法正常工作

感谢您的支持

2 个答案:

答案 0 :(得分:2)

这不是您问题的直接答案。但我认为这将帮助您解决在64位JVM上运行SmartGit的下划线问题。

转到SmartGit安装目录下的bin文件夹。在那里你可以找到" smartgit64.exe"可执行文件以64位模式启动SmartGit。

我使用64位JDK在Win8.1 64位上顺利运行。

答案 1 :(得分:1)

没有办法让静态JAVA_HOME满足我所知道的版本或位数特定的子进程。

您没有说明您所使用的平台,但通常导出的环境变量使得子进程可以使用它们是固定的,可用作进一步调整的基础,或者完全重新定义。

但是,您可以尝试调整调用这些进程的环境,以便它们拥有自己的自定义环境。例如,您可以设置自己的JAVA_ROOT,然后使用它作为创建JAVA_HOME的基础以及针对特定JRE的硬编码或脚本/函数获取环境变量,以便为从中运行的所有内容生成“真正的”JAVA_HOME子外壳。

或者,如果您使用的是OS X,则可以使用一个实用程序来设置和获取已安装JRE的系统信息。这可以在脚本等中使用。其他平台也有类似的工具。

另外,请仔细查看您的工具集。确保JAVA_HOME是唯一的方式来设置它使用的VM - 通常这只是您设置它的方法之一。

[编辑]

我忘记了评论中提到的-d32技巧。如果它有效,这将是一个很好的解决方案,并且您可以为所有调用使用相同版本的VM。

[编辑]

好的,既然你在Windows上,你可以尝试从它自己的环境启动每个Java应用程序。 .cmd或.bat文件(如果这是您的滚动方式),或者您可以创建在调用特定应用程序之前调整的Windows快捷方式。

例如,如果有一个Java main,他们想从命令行运行,很容易将整个命令行包装在.bat文件中。 e.g:

set JAVA_HOME=C:\Some\Path\To\A\JRE
set APP_HOME=C:\Some\Path\To\A\Jar
set JAVA_OPTS="-Dfoo=bar"
%JAVA_HOME%\bin\java.exe %JAVA_OPTS% -jar %APP_HOME%\myApp.jar

现在,运行此jar文件将使用您设置的特定Java可执行文件,并将新的JAVA_HOME环境传递给它启动的Java进程。这会覆盖您在用户或系统环境中设置的任何“默认”JAVA_HOME。

任何其他进程看到此JAVA_HOME,当.bat文件退出时,新定义消失。

或者,如果您始终通过双击它们来启动Java应用程序或Java工具,则可以将这些应用程序包装在Windows快捷方式中 - 即使您只是使用“set JAVA_HOME = ...”添加可执行文件。 “我总是忘记这是多么微不足道,所以我挥手了一下!