我有一个位于以下位置的Java jar文件:
C:\Users\myusername\bin\MyDir\MyApp.jar
我还有一些必需的属性文件(需要作为.jar文件的输入参数)与.jar文件位于同一目录中。
我在这里创建了一个runme.bat文件:
C:\Users\myusername\Desktop\runme.bat
在runme.bat
文件中,这就是我所拥有的:
setlocal
set JAVA_HOME="C:\Program Files\Java\jdk1.8.0_161\bin\"
set PATH=C:\Users\myusername\bin\MyDir\
start %JAVA_HOME%javaw -jar %PATH%MyApp.jar %PATH%propertiesfile.properties
但是,每当我尝试运行.bat文件时,都会收到错误:
Windows cannot find '-jar' Make sure you typed the name correctly, and then try again.
在命令行上,我看到Windows尝试执行此操作:
> "C:\Program Files\Java\jdk1.8.0_161\bin\"javaw -jar C:\Users\myusername\bin\MyDir\MyApp.jar ...
从命令行运行时出现此错误。如果我只是双击.bat文件,就会出现一个cmd窗口并快速消失。
那么,我做错了什么?
谢谢!
答案 0 :(得分:0)
在set命令周围使用双引号,而不是在变量内部。
此外,我认为没有理由使用START命令,除非您希望在第二个命令提示符中启动Java后在原始命令提示符中的批处理文件中执行更多操作。可能但似乎不太可能。
通常,您只需输入可执行文件或使用CALL,以便可执行文件运行并在达到结论后返回批处理。
此外,您将系统路径变量更改为java文件的路径,这将使会话变得非常棘手。值得庆幸的是,这应该仅存在于打开的命令窗口和原始窗口生成的窗口中,因此请将它们全部关闭,然后为路径使用不同的变量名称。
所以我会用两种方式,使用Call,并使用start。
以下是使用call:
的代码@(
setlocal
ECHO ON
)
set "_Title=Runnning My Java"
set "JAVA_HOME=C:\Program Files\Java\jdk1.8.0_161\bin"
set "_MyJarPath=C:\Users\%UserName%\bin\MyDir"
TITLE "%_Title%"
CD /D "%JAVA_HOME%"
CALL "%JAVA_HOME%\javaw.exe" -jar "%_MyJarPath%\MyApp.jar" "%_MyJarPath%\propertiesfile.properties"
(
ENDLOCAL
EXIT /B 0
)
以下是使用start命令的代码:
@(
SETLOCAL
ECHO ON
)
set "_Title=Runnning My Java"
set "JAVA_HOME=C:\Program Files\Java\jdk1.8.0_161\bin"
set "_MyJarPath=C:\Users\%UserName%\bin\MyDir"
start "%_Title%" /D "%JAVA_HOME%" "%JAVA_HOME%\javaw.exe" -jar "%_MyJarPath%\MyApp.jar" "%_MyJarPath%propertiesfile.properties"
(
ENDLOCAL
EXIT /B 0
)