JDK 32 位和 64 位同时 JAVA_HOME
JDK 32bit and 64bit on JAVA_HOME simultaneously
我在 Windows 8.1 中使用 smartGIT,它使用 32 位 JDK (1.8),我需要将 JAVA_HOME 设置为 32 位目录
但我现在也在使用 Android Studio,它需要 JDK 64 位(已安装 1.8),我需要设置 JAVA_HOME 指向 64 位目录
有没有办法将它们都设置在同一个变量上,并取决于软件是否需要 JDK 32 或 64 可以选择合适的框架???
我试图通过像这样用分号分隔它们来同时设置它们
JAVA_HOME
C:\Program Files\Java\jdk1.8.0_25\;C:\Program Files (x86)\Java\jdk1.8.0_25
但这只适用于 32 位版本,64 位版本仍然无效
感谢支持
没有办法拥有满足我所知道的版本或位数特定子进程的静态 JAVA_HOME。
你没有说你在哪个平台上,但通常导出的环境变量使得子进程可以使用它们是固定的,用作进一步调整的基础,或者完全重新定义。
但是,您可以尝试调整调用这些进程的环境,以便它们拥有自己的自定义环境。例如,您可以拥有自己的 JAVA_ROOT 集,然后使用它作为创建 JAVA_HOME 的基础以及为特定 JRE 制作的硬编码或 script/function 获取的环境变量"real" JAVA_HOME 用于此子 shell 中的所有内容 运行。
或者,如果您使用的是 OS X,则有一个实用程序可用于设置和获取已安装 JRE 的系统信息。这个可以用在脚本等,其他平台也有类似的工具。
此外,请仔细查看您的工具集。确保 JAVA_HOME 是 唯一 设置它使用的 VM 的方法——通常这只是您可以设置它的方法之一。
[编辑]
我忘记了评论中提到的 -d32 技巧。如果可行,那将是一个很好的解决方案,并且您可以对所有调用使用相同版本的 VM。
[编辑]
好的,因为您使用的是 Windows,您可以尝试从各自的环境中启动每个 Java 应用程序。一个 .cmd 或 .bat 文件,如果这是您滚动的方式,或者您可以创建一个 Windows 快捷方式,在调用特定应用程序之前对其进行调整。
例如,如果一个人有一个 Java main 他们想从命令行 运行,那么很容易将整个命令行包装在一个 .bat 文件中。例如:
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 进程.这将覆盖您在用户或系统环境中设置的任何 "default" JAVA_HOME。
任何其他进程不会看到这个JAVA_HOME,并且当 .bat 文件退出时新定义消失。
或者,如果您总是通过双击启动 Java 应用程序或 Java 工具,您可以将这些应用程序包装在 Windows 快捷方式中——甚至如果你只是在可执行文件前面加上 "set JAVA_HOME=..." 我总是忘记这是多么微妙,所以我挥手了一点!
这不是对您问题的直接回答。但我认为这将帮助您解决 运行 SmartGit 在 64 位 JVM 上的下划线问题。
进入SmartGit安装目录下的bin文件夹。在那里你可以找到 "smartgit64.exe" 可执行文件以在 64 位模式下启动 SmartGit。
我用64位JDK在Win8.1 64位下顺利运行。
我在 Windows 8.1 中使用 smartGIT,它使用 32 位 JDK (1.8),我需要将 JAVA_HOME 设置为 32 位目录
但我现在也在使用 Android Studio,它需要 JDK 64 位(已安装 1.8),我需要设置 JAVA_HOME 指向 64 位目录
有没有办法将它们都设置在同一个变量上,并取决于软件是否需要 JDK 32 或 64 可以选择合适的框架???
我试图通过像这样用分号分隔它们来同时设置它们
JAVA_HOME
C:\Program Files\Java\jdk1.8.0_25\;C:\Program Files (x86)\Java\jdk1.8.0_25
但这只适用于 32 位版本,64 位版本仍然无效
感谢支持
没有办法拥有满足我所知道的版本或位数特定子进程的静态 JAVA_HOME。
你没有说你在哪个平台上,但通常导出的环境变量使得子进程可以使用它们是固定的,用作进一步调整的基础,或者完全重新定义。
但是,您可以尝试调整调用这些进程的环境,以便它们拥有自己的自定义环境。例如,您可以拥有自己的 JAVA_ROOT 集,然后使用它作为创建 JAVA_HOME 的基础以及为特定 JRE 制作的硬编码或 script/function 获取的环境变量"real" JAVA_HOME 用于此子 shell 中的所有内容 运行。
或者,如果您使用的是 OS X,则有一个实用程序可用于设置和获取已安装 JRE 的系统信息。这个可以用在脚本等,其他平台也有类似的工具。
此外,请仔细查看您的工具集。确保 JAVA_HOME 是 唯一 设置它使用的 VM 的方法——通常这只是您可以设置它的方法之一。
[编辑]
我忘记了评论中提到的 -d32 技巧。如果可行,那将是一个很好的解决方案,并且您可以对所有调用使用相同版本的 VM。
[编辑]
好的,因为您使用的是 Windows,您可以尝试从各自的环境中启动每个 Java 应用程序。一个 .cmd 或 .bat 文件,如果这是您滚动的方式,或者您可以创建一个 Windows 快捷方式,在调用特定应用程序之前对其进行调整。
例如,如果一个人有一个 Java main 他们想从命令行 运行,那么很容易将整个命令行包装在一个 .bat 文件中。例如:
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 进程.这将覆盖您在用户或系统环境中设置的任何 "default" JAVA_HOME。
任何其他进程不会看到这个JAVA_HOME,并且当 .bat 文件退出时新定义消失。
或者,如果您总是通过双击启动 Java 应用程序或 Java 工具,您可以将这些应用程序包装在 Windows 快捷方式中——甚至如果你只是在可执行文件前面加上 "set JAVA_HOME=..." 我总是忘记这是多么微妙,所以我挥手了一点!
这不是对您问题的直接回答。但我认为这将帮助您解决 运行 SmartGit 在 64 位 JVM 上的下划线问题。
进入SmartGit安装目录下的bin文件夹。在那里你可以找到 "smartgit64.exe" 可执行文件以在 64 位模式下启动 SmartGit。
我用64位JDK在Win8.1 64位下顺利运行。