一、安装环境描述:
- Kafka版本:kafka_2.13-2.8.1
- cmak 版本:cmak-3.0.0.6
- 安装环境:windows 11
二、问题描述
当我们在 命令行启动 cmak.bat 命令时,会报如下错误:
命令行太长
三、解决办法
修改 cmak.bat 文件,使用以下配置
修改 APP_CLASSPATH 路径,使用 * 代替原来的全路径
set "APP_CLASSPATH=%APP_LIB_DIR%\..\conf\;%APP_LIB_DIR%\*;"
修改后 cmak.bat 文件 如下:
@REM cmak launcher script
@REM
@REM Environment:
@REM JAVA_HOME - location of a JDK home dir (optional if java on path)
@REM CFG_OPTS - JVM options (optional)
@REM Configuration:
@REM CMAK_config.txt found in the CMAK_HOME.
@setlocal enabledelayedexpansion
@setlocal enableextensions@echo offif "%CMAK_HOME%"=="" (set "APP_HOME=%~dp0\\.."rem Also set the old env name for backwards compatibilityset "CMAK_HOME=%~dp0\\.."
) else (set "APP_HOME=%CMAK_HOME%"
)set "APP_LIB_DIR=%APP_HOME%\lib"rem Detect if we were double clicked, although theoretically A user could
rem manually run cmd /c
for %%x in (!cmdcmdline!) do if %%~x==/c set DOUBLECLICKED=1rem FIRST we load the config file of extra options.
set "CFG_FILE=%APP_HOME%\CMAK_config.txt"
set CFG_OPTS=
call :parse_config "%CFG_FILE%" CFG_OPTSrem We use the value of the JAVA_OPTS environment variable if defined, rather than the config.
set _JAVA_OPTS=%JAVA_OPTS%
if "!_JAVA_OPTS!"=="" set _JAVA_OPTS=!CFG_OPTS!rem We keep in _JAVA_PARAMS all -J-prefixed and -D-prefixed arguments
rem "-J" is stripped, "-D" is left as is, and everything is appended to JAVA_OPTS
set _JAVA_PARAMS=
set _APP_ARGS=set "APP_CLASSPATH=%APP_LIB_DIR%\..\conf\;%APP_LIB_DIR%\*;"
set "APP_MAIN_CLASS=play.core.server.ProdServerStart"
set "SCRIPT_CONF_FILE=%APP_HOME%\conf\application.ini"rem Bundled JRE has priority over standard environment variables
if defined BUNDLED_JVM (set "_JAVACMD=%BUNDLED_JVM%\bin\java.exe"
) else (if "%JAVACMD%" neq "" (set "_JAVACMD=%JAVACMD%") else (if "%JAVA_HOME%" neq "" (if exist "%JAVA_HOME%\bin\java.exe" set "_JAVACMD=%JAVA_HOME%\bin\java.exe"))
)if "%_JAVACMD%"=="" set _JAVACMD=javarem Detect if this java is ok to use.
for /F %%j in ('"%_JAVACMD%" -version 2^>^&1') do (if %%~j==java set JAVAINSTALLED=1if %%~j==openjdk set JAVAINSTALLED=1
)rem BAT has no logical or, so we do it OLD SCHOOL! Oppan Redmond Style
set JAVAOK=true
if not defined JAVAINSTALLED set JAVAOK=falseif "%JAVAOK%"=="false" (echo.echo A Java JDK is not installed or can't be found.if not "%JAVA_HOME%"=="" (echo JAVA_HOME = "%JAVA_HOME%")echo.echo Please go toecho http://www.oracle.com/technetwork/java/javase/downloads/index.htmlecho and download a valid Java JDK and install before running cmak.echo.echo If you think this message is in error, please checkecho your environment variables to see if "java.exe" and "javac.exe" areecho available via JAVA_HOME or PATH.echo.if defined DOUBLECLICKED pauseexit /B 1
)rem if configuration files exist, prepend their contents to the script arguments so it can be processed by this runner
call :parse_config "%SCRIPT_CONF_FILE%" SCRIPT_CONF_ARGScall :process_args %SCRIPT_CONF_ARGS% %%*set _JAVA_OPTS=!_JAVA_OPTS! !_JAVA_PARAMS!if defined CUSTOM_MAIN_CLASS (set MAIN_CLASS=!CUSTOM_MAIN_CLASS!
) else (set MAIN_CLASS=!APP_MAIN_CLASS!
)rem Call the application and pass all arguments unchanged.
"%_JAVACMD%" !_JAVA_OPTS! !CMAK_OPTS! -cp "%APP_CLASSPATH%" %MAIN_CLASS% !_APP_ARGS!@endlocalexit /B %ERRORLEVEL%rem Loads a configuration file full of default command line options for this script.
rem First argument is the path to the config file.
rem Second argument is the name of the environment variable to write to.
:parse_configset _PARSE_FILE=%~1set _PARSE_OUT=if exist "%_PARSE_FILE%" (FOR /F "tokens=* eol=# usebackq delims=" %%i IN ("%_PARSE_FILE%") DO (set _PARSE_OUT=!_PARSE_OUT! %%i))set %2=!_PARSE_OUT!
exit /B 0:add_javaset _JAVA_PARAMS=!_JAVA_PARAMS! %*
exit /B 0:add_appset _APP_ARGS=!_APP_ARGS! %*
exit /B 0rem Processes incoming arguments and places them in appropriate global variables
:process_args:param_loopcall set _PARAM1=%%1set "_TEST_PARAM=%~1"if ["!_PARAM1!"]==[""] goto param_afterlooprem ignore arguments that do not start with '-'if "%_TEST_PARAM:~0,1%"=="-" goto param_java_checkset _APP_ARGS=!_APP_ARGS! !_PARAM1!shiftgoto param_loop:param_java_checkif "!_TEST_PARAM:~0,2!"=="-J" (rem strip -J prefixset _JAVA_PARAMS=!_JAVA_PARAMS! !_TEST_PARAM:~2!shiftgoto param_loop)if "!_TEST_PARAM:~0,2!"=="-D" (rem test if this was double-quoted property "-Dprop=42"for /F "delims== tokens=1,*" %%G in ("!_TEST_PARAM!") DO (if not ["%%H"] == [""] (set _JAVA_PARAMS=!_JAVA_PARAMS! !_PARAM1!) else if [%2] neq [] (rem it was a normal property: -Dprop=42 or -Drop="42"call set _PARAM1=%%1=%%2set _JAVA_PARAMS=!_JAVA_PARAMS! !_PARAM1!shift))) else (if "!_TEST_PARAM!"=="-main" (call set CUSTOM_MAIN_CLASS=%%2shift) else (set _APP_ARGS=!_APP_ARGS! !_PARAM1!))shiftgoto param_loop:param_afterloopexit /B 0
修改完成后,在命令行启动 cmak.bat 命令,默认端口为 9000
.\cmak.bat
浏览器访问:http://localhost:9000/