我试图让标题尽可能具有描述性,但我基本上试图找到javaw.exe
,因为当我启动我的JAR时,cmd只找到java.exe
,但是提示窗口很丑,我不知道希望它在那里。
什么有效:
java -jar myJar.jar
我正在尝试做什么
javaw -jar myJar.jar
什么也有效:
JAVAWPATH\javaw.exe -jar myJar.jar
我正在尝试让程序自动适应任何计算机,因为我不知道javaw是否总是在同一个位置。
所以我设法使用
找到一堆“javaw.exe”文件WHERE /R c:\ *javaw.exe
我想选择一个返回的路径并设置某种字符串变量,然后我可以使用elevate MYstringPATHtoJAVAW -jar myJar.jar
。
答案 0 :(得分:1)
我编写了一个批处理脚本,通过注册表找到java instalation文件夹:
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@ECHO OFF
:: Export java settings from registry to a temporary file
START /W REGEDIT /E %Temp%.\java.reg "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft"
:: Find java location
FOR /F "tokens=1* delims==" %%A IN ('TYPE %Temp%.\java.reg ^| FIND "INSTALLDIR"') DO SET JAVA_HOME=%%B
SET JAVA_HOME=%JAVA_HOME:"=%
SET JAVA_HOME=%JAVA_HOME:\\=\%
SET JAVA_HOME
:: Get java version
FOR /F "tokens=1* delims==" %%A IN ('TYPE %Temp%.\java.reg ^| FIND "CurrentVersion"') DO SET JAVA_VERSION=%%B
SET JAVA_VERSION=%JAVA_VERSION:"=%
SET JAVA_VERSION
SET JAVA_VERSION=%JAVA_VERSION:.=%
SET JAVA_VERSION=%JAVA_VERSION:_=%
SET /A JAVA_VERSION=%JAVA_VERSION%
:: Delete temp file
@DEL %Temp%.\java.reg /S /Q > NUL 2>&1
:: Check java version compatibility
IF %JAVA_VERSION% LSS 16020 (
ECHO.
ECHO YOU NEED AT LEAST JAVA WITH VERSION 1.6.0_20 -- this is just an example echo.
GOTO :EOF
)
PAUSE
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
我已将它用作base。但如果已安装的java是64位(是的,我必须更新此脚本......),它可能无法正常工作,但它可以轻松更新.Hope这对你有帮助。