【问题标题】:Changing Java Version for a Specific Program更改特定程序的 Java 版本
【发布时间】:2014-06-26 16:06:54
【问题描述】:

如果我安装了多个版本的 Java,我可以通过批处理文件指定我想要启动程序的版本,还是我必须更改我的环境变量?如果我必须更改环境路径,当前使用其他版本的程序会停止工作吗?我想没有,但想确定一下。

我有以下批处理文件可以即时更改版本,但它似乎不起作用-http://pastebin.com/4S6xYHan

编辑 - 更新批处理文件。

【问题讨论】:

  • 您的问题可能是GOTO :end。请改用GOTO end(引用标签时不要冒号)。标签仍必须声明为:end
  • 至少在基于 NT 的 Windows 版本中,批处理对环境所做的更改与批处理运行隔离。它们不会在系统范围内更改,因此不会影响其他批次运行(即使是同一批次)。对于系统范围的更改,您需要使用 Fede 指出的对话框。

标签: java batch-file parameters


【解决方案1】:

如果您的批处理文件执行 Java 程序为:

java  com.stackexchange.MyProgram  argument1 argument2 etc

您可以将其更改为使用特定的 Java 安装执行它:

"C:\Program Files\Java\jdk1.6.0_20\bin\java.exe"  com.stackexchange.MyProgram  argument1 argument2 etc

或者您可以声明一个变量并使用它(如果您有一个 ma​​ster 批处理文件来为您的 mini 批处理文件设置环境,这很有用):

:: In master batch ::
SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_20\bin

:: In mini batch ::
"%JAVA_HOME%\java.exe"  com.stackexchange.MyProgram  argument1 argument2 etc

【讨论】:

  • 谢谢!第一个答案效果很好,但我无法让“母料”解决方案发挥作用。这是我的批处理文件- Master:pastebin.com/eD9s8ekq Program Kicker:pastebin.com/qP1papMq
  • 你看到我的 cmets 了吗?
  • 我很好奇。当我为 Java 添加检查时,它仍然显示 1.6.0_20,但随后它引用了我正在尝试使用的那个,即 16.3。下面的屏幕截图是否意味着它运行的是 16.3? tinypic.com/view.php?pic=261ivki&s=8#.U6xbYrH5dbQ --- 编辑- 我刚刚做了。现在要进行更改,谢谢。
  • 它似乎没有运行我指定的版本。如果我尝试- --- '@echo off TITLE Java v.6u13 "C:\Program Files\JavaTest\jre6\bin\java.exe" -version PAUSE' --- 我得到- --- 'java 版本" 1.6.0_20" Java(TM) SE Runtime Environment (build 1.6.0_20-b02) Java HotSpot(TM) Client VM(build 16.3-b01,混合模式,共享)'
  • 你是对的。我检查了该文件夹中的“javacpl.exe”,看起来我的对应方实际上安装了相同的版本但在不同的位置,而不是在该位置安装 6u13。非常感谢您的帮助!
【解决方案2】:

你的批处理文件没问题。

您可以在终端上使用SET 命令来设置您的JAVA_HOME 并将其添加到您的path 变量中,这样就足以使用您想要的jdk 运行应用程序了。

请记住,如果您通过终端设置它,该变量将在该终端上工作,并且在该终端打开期间持续。

如果你想为你覆盖范围,那么你需要在 windows 变量中设置:

对于 linux,您需要使用 export 命令导出变量

【讨论】:

  • 这是我运行批处理文件时得到的结果-tinypic.com/view.php?pic=2uep7o7&s=8#.U6xLP7H5dbQ 所以,根据您的说法,这应该是正确的,因为它只针对该实例控制台更改它,对吧?如果是这样,那么我该如何启动另一个批处理文件,其中包含以下参数-“java -Xms64m -Xmx128m -cp”+一堆 jar 依赖项。在控制台和批处理中设置 Java 版本后,我可以添加该程序名称来启动它吗?这行得通吗?
【解决方案3】:

如果您想为程序的特定实例执行此操作,为什么不指定完整路径,例如

if "%1" == "6.20" (

'C:\Program Files\Java\jdk1.6.0_20\bin\java.exe' -version

)

【讨论】:

  • 我不完全确定你的意思。完成后,我是否只是通过在批处理文件中调用它来启动我的程序?
猜你喜欢
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 2012-09-05
  • 1970-01-01
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
相关资源
最近更新 更多