Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改特定程序的Java版本_Java_Batch File_Parameters - Fatal编程技术网

更改特定程序的Java版本

更改特定程序的Java版本,java,batch-file,parameters,Java,Batch File,Parameters,如果我安装了多个版本的Java,我可以通过批处理文件指定要启动程序的版本,还是必须更改环境变量?如果必须更改环境路径,当前使用其他版本的程序是否会停止工作?我想不会,但我想确定一下 我有以下批处理文件,可以随时更改版本,但它似乎不起作用- 编辑-更新批处理文件。批处理文件正常 您可以在终端上使用SET命令来设置JAVA\u HOME,还可以将其添加到path变量中,这样就可以使用您想要的jdk运行应用程序了 请记住,如果通过终端设置该变量,该变量将在该终端上工作,并在该终端打开期间持续 如果要覆

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

我有以下批处理文件,可以随时更改版本,但它似乎不起作用-

编辑-更新批处理文件。

批处理文件正常

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

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

如果要覆盖范围,则需要在windows中设置变量:


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

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

if "%1" == "6.20" (

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

如果批处理文件按以下方式执行Java程序:

java com.stackexchange.MyProgram argument1 argument2等
您可以将其更改为使用特定Java安装执行,如下所示:

“C:\Program Files\Java\jdk1.6.0\U 20\bin\Java.exe”com.stackexchange.MyProgram argument1 argument2等
或者,您可以声明一个变量并使用它(如果您有一个为小型批处理文件设置环境的主批处理文件,这将非常有用):

::主批次中::
设置JAVA\u HOME=C:\Program Files\JAVA\jdk1.6.0\u 20\bin
::在小批量中::
%JAVA\u HOME%\JAVA.exe“com.stackexchange.MyProgram argument1 argument2等

以下是我运行批处理文件时得到的结果—因此,根据您的说法,这应该是正确的,因为它只会更改该实例控制台的批处理文件,对吗?如果是这样,那么我如何启动另一个批处理文件,其中包含以下参数——“java-Xms64m-Xmx128m-cp”+一组jar依赖项。在控制台和批处理中设置Java版本后,我可以添加程序名来启动它吗?那行吗?我不太清楚你的意思。完成后,是否通过在批处理文件中调用来启动程序?您的问题可能是
GOTO:end
。改为尝试
GOTO end
(引用标签时不使用冒号)。标签仍必须声明为
:end
。至少在基于NT的Windows版本中,批对环境所做的更改与批运行隔离。它们不会在系统范围内更改,因此不会影响其他批处理运行(即使是同一批处理)。对于系统范围的更改,您需要使用Fede指出的对话框。谢谢!第一个答案非常有效,但我无法让“主批次”解决方案发挥作用。这是我的批处理文件-主人:程序Kicker:你看到我对你的问题的评论了吗?我很好奇。当我为Java添加一个检查时,它仍然显示为1.6.0_20,但随后它引用了我尝试使用的16.3。下面的屏幕截图是否意味着它运行的是16.3版本编辑-我刚刚编辑了。现在要进行更改,谢谢。它似乎没有运行我指定的版本。如果我尝试--“echo off TITLE Java v.6u13”C:\Program Files\JavaTest\jre6\bin\Java.exe”-version PAUSE”--我得到--“Java version”1.6.0_20“Java(TM)SE运行时环境(build 1.6.0_20-b02)Java HotSpot(TM)客户端VM(build 16.3-b01,混合模式,共享)”你说得对。我检查了那个文件夹中的“javacpl.exe”,它看起来像是我的对手实际上安装了相同的版本,但在不同的位置,而不是在那个位置安装6u13。非常感谢你的帮助!