티스토리 뷰
* 개요
ANTLR 사용하는 프로그램을 WAR 배포하자
파싱 결과물이 물음표 ???나 깨진 문자로 바뀌어 있는 상황.
* 원인
Lexer 에 집어넣을때 InputStream 을 써서 사용
InputStream is = new ByteArrayInputStream(atds.scr.getBytes())
lex = new AtDefine2Lexer(CharStreams.fromStream(is, StandardCharsets.UTF_8)
이때 들어간 InputStream 이 잘못된 것 .
* 해결
getBytes() 대신
getBytes("UTF-8") 로 변경
* 참고
이 상황은 개발 모드에서는 정상적으로 동작했으나
WAR 로 export 하여 톰캣에 올렸을때만 나타난 증상
WAR 로 묶는 과정에서 사용하는 클래스의 우선순위가 달라졌거나
톰캣(8.5 사용) 의 자바 버전 차이에 따라 달라졌을 거라고 추측하고 있음.
'SW개발 > ANTLR' 카테고리의 다른 글
java.lang.NoClassDefFoundError: org/antlr/v4/runtime/TokenSource (0) | 2018.08.01 |
---|---|
언어 개발용 프로젝트를 따로 분리해서 사용하기 (0) | 2018.07.30 |
작성중 / ParserRuleContext (0) | 2018.07.27 |
listener 사용 (0) | 2018.07.27 |
Listener , Visitor 비교 (0) | 2018.07.27 |