@ScriptAssert
를 사용하면 HV000232: No JSR 223 script engine found for language "javascript"
오류가 발생했습니다.
결론부터 얘기하면 jdk버전 문제였습니다.
조금 디테일하게는 JVM의 Javascript Engine 문제였으며 GraalVM
에서 발생하는 문제였습니다.
Nashorn
엔진을 사용하는 버전(jdk8 ~ jdk14)을 사용하면 됩니다.
아래는 삽질기입니다.
----------------------------------------------------------------------------------------------------------------------
인터넷을 찾아보니 단순히 jdk11버전이 아니라서 jdk11로 설정하면 된다고만 나와있었습니다.(jdk17사용중이었습니다.)
물론 실제로는 @ScriptAssert
를 많이 사용하지 않아서 그냥 넘어가도 상관없겠지만 만약 해당 어노테이션을 사용하는 프로젝트는 평생 jdk11만 써야하는 얘기가 됩니다.
무언가 이유가 있겠지하는 궁금함에 구글링을 했는데 특별하게 이유가 나와있지 않았습니다.
그 와중에 한 질문글을 보게되었습니다.
JDK에서 사용가능한 스크립팅 언어 목록을 확인 할 수 있는 코드라고 합니다.
ScriptEngineManager mgr = new ScriptEngineManager();
List<ScriptEngineFactory> engineFactories = mgr.getEngineFactories();
for (ScriptEngineFactory engine : engineFactories) {
System.out.println("engine.getEngineName() = " + engine.getEngineName());
}
아무것도 출력되지 않았습니다. jdk 버전을 낮추어 jdk8로 실행해봤습니다.
뭔가가 출력되었습니다. HV000232
오류가 나는지 확인해보니 오류가 나지 않습니다.
jdk11로 실행해봤습니다.
다시 HV000232
오류가 나는지 확인했습니다. 이번에도 잘 작동합니다.
아마 HV000232
오류는 Nashorn engine
의 존재여부와 관련이 있는 것 같습니다.
GraalVM
으로 대체된 jdk15부터 해당 오류가 발생하는 것을 확인했습니다.
사실 자바엔진을 바꿨다는 얘기는 들었었지만 몇 버전부터인지 뭐가 달라지는지는 관심이 없어서 삽질을 한 내용입니다.
'Spring' 카테고리의 다른 글
Gradle Querydsl Annotation Processor로 설정 (0) | 2022.11.19 |
---|---|
Gradle 빌드시 Deprecated Gradle features were used in this build 오류 (0) | 2022.11.18 |
[Tomcat] 캐시에 추가할 수 없습니다. 왜냐하면 만료된 캐시 엔트리들을 없애버린 이후에도 여유 공안이 충분하지 않기 때문입니다. 캐시의 최대 크기를 증가시키는 것을 고려해 보십시오. (0) | 2021.08.31 |
[JPA] 기본 키(PK) 매핑 방법과 생성 전략 (0) | 2020.08.18 |
[JPA] Entity EntityManager EntityManagerFactory PersistenceContext (0) | 2020.08.05 |