이 에러에 대해서 검색해 보면 주로 자바 컴파일러의 버전에 관한 이야기가 많이 나온다.
그러나 나는 배치 실행 스크립트를 개발하던 중, 초보적인 실수 때문에 이 에러를 접하게 되었었는데...
그 문제란 바로 따옴표 문제였다.
. 이나 - 등 특수문자 비스무리 한 것들이 들어간 파일경로들의 묶음이 클래스패스로 들어갈 경우나,
배치 실행파일의 각각의 인수들을 따옴표로 묶어주지 않을 경우, 잘못 인식하는 상황이 발생하는 것이었다.
* 배치 cmd 파일 예시
@echo off
SET JAVA_HOME=C:\FrameOne\jdk1.6.0_29
SET PATH=%PATH%;%JAVA_HOME%\bin;
SET BATCH_HOME=C:\FrameOne\workspace\ProjectName-Batch
SET BATCH_CONFIG=%BATCH_HOME%\src\config\system\projectNameBatch.xml
SET BACKOFFICE_CONFIG=C:\FrameOne\workspace\ProjectName-Backoffice\src\config\system\projectNameBackoffice.xml
@REM CORE classpath
SET CP="
SET CP=%CP%;C:\FrameOne\workspace\FrameOne-core-1.0\build\classes;
@REM log4sql
SET CP=%CP%;C:\FrameOne\workspace\ProjectName-Library\frameone\lib\log4sql.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\asm-3.2.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\aspectjrt.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\aspectjweaver-1.6.2.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\cglib-2.2.jar;
@REM SET CP=%CP%;%BATCH_HOME%\inf\lib\cgvsms-lib.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\commons-beanutils-1.7.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\commons-collections-3.2.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\commons-configuration-1.6.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\commons-digester-1.8.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\commons-io-1.4.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\commons-lang-2.4.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\commons-logging-1.1.1.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\dom4j-1.6.1.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\ibatis-2.3.4.726.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\javaee.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\junit-4.4.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\log4j-1.2.15.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\mail.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\miplatform-3.2.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\ojdbc6.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\ooxml-schemas-1.0.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\poi-3.5.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\poi-ooxml-3.5.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\spring-2.5.6.jar;
@REM SET CP=%CP%;%BATCH_HOME%\inf\lib\ucf-lib.jar;
SET CP=%CP%;%BATCH_HOME%\inf\lib\xbean.jar;
SET CP=%CP%;%BATCH_HOME%\inf\classes;
SET CP=%CP%;"
@REM ECHO CP=%CP%
@REM 각각의 치환되는 인수들을 이 cmd파일의 인수로 입력할 때에도 따옴표로 묶어주는 것이 좋다!
%JAVA_HOME%\bin\java -classpath %CP% -Dconfig=%BATCH_CONFIG%,%BACKOFFICE_CONFIG% -Dbatch.name=%2 -Drundate=%3 -Duserdata=%4 -Djobno=%5 frameone.core.batch.common.BatchOnDemandExecutor %1 > C:/tmp/batchOnDemand.log
PAUSE