【问题标题】:JDK 32bit and 64bit on JAVA_HOME simultaneouslyJDK 32 位和 64 位同时在 JAVA_HOME
【发布时间】:2015-03-19 03:33:08
【问题描述】:

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

但现在我也在使用需要 JDK 64 位(安装 1.8)的 Android Studio,我需要将 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

但这仅适用于 32BIT 版本,64BIT 仍然不起作用

感谢支持

【问题讨论】:

  • 我很确定从 Java7 开始支持 -d32 启动标志,这将强制 64 位安装以 32 位模式运行(我不确定它是否支持所有操作系统)。有没有办法配置 smartGIT 在运行 Java 时使用这个标志?
  • 大多数工具都有安装脚本或环境设置文件。但是,我怀疑是否需要任何一个版本。 Android 是 32 位的,而 IntelliJ 可以在 32 位 JVM 中正常运行。同样,如果 smartGIT 不能使用 64 位 JVM,我会感到惊讶(它不会很聪明)
  • 例如如何在 Android Studio 上设置 -d32 启动标志??

标签: java windows-8.1


【解决方案1】:

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

进入 SmartGit 安装目录下的 bin 文件夹。在那里您可以找到“smartgit64.exe”可执行文件以在 64 位模式下启动 SmartGit。

我在 Win8.1 64bit 和 64bit JDK 中运行流畅。

【讨论】:

  • 谢谢。为我工作。不知道为什么没有正式暗示。
【解决方案2】:

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

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

但是,您可以尝试调整调用这些进程的环境,以便它们拥有自己的自定义环境。例如,您可以设置自己的 JAVA_ROOT,然后将其用作创建 JAVA_HOME 的基础,以及为特定 JRE 获取硬编码或脚本/函数获取的环境变量,以使一切运行的“真实”JAVA_HOME 都从此运行子壳。

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

另外,请仔细检查您的工具集。确保 JAVA_HOME 是设置它使用的虚拟机的唯一方式——通常这只是您可以设置它的方式之一。

[编辑]

我忘记了 cmets 中提到的 -d32 技巧。如果可行,那将是一个不错的解决方案,并且您可以对所有调用使用相同版本的 VM。

[编辑]

好的,由于您使用的是 Windows,您可以尝试从其自己的环境中启动每个 Java 应用程序。 .cmd 或 .bat 文件(如果这是您滚动的方式),或者您可以创建一个 Windows 快捷方式,在调用特定应用程序之前进行调整。

例如,如果有一个 Java 主程序,他们想从命令行运行,很容易将整个命令行包装在一个 .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

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

任何其他进程将不会看到这个 JAVA_HOME,并且当 .bat 文件退出时,新定义消失。

或者,如果您总是通过双击来启动您的 Java 应用程序或 Java 工具,您也许可以将这些应用程序包装在一个 Windows 快捷方式中——即使您只是在可执行文件前面加上“set JAVA_HOME=... “不过,我总是忘记这是多么棘手,所以我有点挥手!

【讨论】:

  • 你有那个蝙蝠的例子吗???每次启动我的应用程序时都会重写 java_home 吗???如果是这样,是否意味着我必须在我的计算机上使用 java 为每个应用程序编写一个 cmd???
  • 如果您使用批处理文件或其他命令外壳启动这些应用程序中的任何一个,您可以在调用应用程序之前在那里设置 JAVA_HOME。如果你看,也许其中一些应用程序已经通过命令 shell 启动,在这种情况下你可以编辑它。这个想法是在环境中为从该环境启动的任何进程设置 JAVA_HOME(或任何环境变量)。碰巧您已经在您的用户环境中设置了它,所有应用程序都从该环境继承。但是您可以更好地控制它。
猜你喜欢
  • 2014-08-13
  • 2012-02-11
  • 2013-01-13
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
相关资源
最近更新 更多