Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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_Windows_Batch File_Java 7_Java 6 - Fatal编程技术网

批处理文件以执行java应用程序

批处理文件以执行java应用程序,java,windows,batch-file,java-7,java-6,Java,Windows,Batch File,Java 7,Java 6,我有一个java应用程序,我想让我的Windows批处理文件执行。我可以知道为什么下面的批处理文件代码不起作用,以及如何更正它们吗?在继续检查64位Java之前,脚本应该首先检查32位Java 我还希望我的批处理文件能够处理Java6及以上版本,包括JRE或JDK环境。如何修改批处理文件以处理它们 批处理脚本: @ECHO OFF IF EXIST "C:\Program Files (x86)\Java" ( start C:\Program Files (x86)\Java\jre

我有一个java应用程序,我想让我的Windows批处理文件执行。我可以知道为什么下面的批处理文件代码不起作用,以及如何更正它们吗?在继续检查64位Java之前,脚本应该首先检查32位Java

我还希望我的批处理文件能够处理Java6及以上版本,包括JRE或JDK环境。如何修改批处理文件以处理它们

批处理脚本:

@ECHO OFF 
IF EXIST "C:\Program Files (x86)\Java" (
    start C:\Program Files (x86)\Java\jre7\bin\java -jar %~dp0\JavaShop.jar
) ELSE (
    IF EXIST "C:\Program Files\Java" C:\Program Files\Java\jre6\bin\java -jar %~dp0\JavaShop.jar
    ELSE ECHO Java software not found on your system. Please go to http://java.com/en/ to download a copy of Java.
    PAUSE
)

我认为,如果您试图预测所有可能的安装路径,您将是一个失败者。当然,如果Java在机器上可用,它已经在它的路径上,即通过以下方式可用:

java

同样在起始行中,假设硬编码的路径足够好,由于路径中有空格字符,因此需要在路径周围使用字符。

执行路径中有空格字符。试试这个

@ECHO OFF 
IF EXIST "C:\Program Files (x86)\Java\jre7" (
    start "C:\Program Files (x86)\Java\jre7\bin\java.exe" -jar %~dp0\JavaShop.jar
) ELSE (
    IF EXIST "C:\Program Files\Java\jre6" 
    start "C:\Program Files\Java\jre6\bin\java.exe" -jar %~dp0\JavaShop.jar
    ELSE ECHO Java software not found on your system. Please go to http://java.com/en/ to download a copy of Java.
    PAUSE
)
但最好的办法是检查是否设置了环境变量JAVA_HOME。如果设置了,则系统中安装了java

@ECHO OFF 
IF EXIST %JAVA_HOME% (
    start %JAVA_HOME%\bin\java.exe -jar %~dp0\JavaShop.jar
) ELSE (
    ECHO Java software not found on your system. Please go to http://java.com/en/ to download a copy of Java.
    PAUSE
)
如果没有JAVA_HOME set,您可以尝试使用JAVA命令本身

@ECHO OFF 
IF EXIST java (
    start java -jar %~dp0\JavaShop.jar
) ELSE (
    ECHO Java software not found on your system. Please go to http://java.com/en/ to download a copy of Java.
    PAUSE
)

出于好奇,为什么要先32位?32位基本上是死机。如果我没有正确理解你的问题,你想从java程序中执行一个批处理文件吗?或者您正试图从批处理文件运行JavaShop.jar?这里有什么错误?也许名字中有空格是个问题。请尝试双引号。请告诉我们什么不起作用,以及您如何知道它不起作用。当您执行此脚本时,会发生什么?C:\ProgramFiles x86\Java\jre7\bin\Java-jar%~dp0\JavaShop.jar是否在任何脚本之外的提示符下工作?+1;e、 我从不在默认位置安装JDK和JRE。我以64位安装Java JDK,当我转到命令行键入Java时,它告诉我它无法识别。我需要特别转到64位Java来执行它,否则它将无法被识别。如果您无法转到C:\并运行Java,那么它就不在您机器的路径上。有关更多信息,请阅读:我运行了它,它说语法不正确,但没有指定。@thotheolh哪个版本?JAVA_HOME?我注意到,尽管系统中已经安装了JAVA 7,但我的JAVA_HOME没有设置。两个版本都有语法错误。