개발서적/토비 스프링 3.1-Vol.1

[토비의 스프링 - Vol.1]7.5.2 내장형 데이터베이스

public class EmbeddedDbTest {
    EmbeddedDatabase db;
    JdbcTemplate template;

    @BeforeEach
    public void setUp(){
        db = new EmbeddedDatabaseBuilder()
                .setType(HSQL)
                .addScript("classpath:/embeddeddb/schema.sql")
                .addScript("classpath:/embeddeddb/data.sql")
                .build();

        template = new JdbcTemplate(db);
    }

    @AfterEach
    public void tearDown(){
        db.shutdown();
    }

    @Test
    public void initData(){
        assertEquals(template.queryForObject("select count(*) from sqlmap", Integer.class), 2);
        List<Map<String, Object>> list = template.queryForList("select * from sqlmap order by key_");

        assertEquals((String)list.get(0).get("key_"), "KEY1");
        assertEquals((String)list.get(0).get("sql_"), "SQL1");
        assertEquals((String)list.get(1).get("key_"), "KEY2");
        assertEquals((String)list.get(1).get("sql_"), "SQL2");
    }

    @Test
    public void insert(){
        template.update("insert into sqlmap(key_, sql_) values(?, ?)", "KEY3", "SQL3");
        assertEquals(template.queryForObject("select count(*) from sqlmap", Integer.class), 3);
    }
}

p.633에 코드를 실행중 오류가 발생

 

java.lang.UnsupportedClassVersionError: org/hsqldb/jdbcDriver has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

 

 

내용을 보니.. hsqldb에 jdk 버전이 안맞는 것으로 확인

현재 사용중인 jre는 1.8이였다.

 

http://hsqldb.org/doc/2.0/changelist_2_0.txt

위에 문서를 확인해보니

hsql 2.6버전 부터는 최소 jre가 11버전이였다.

그래서 2.5버전으로 다운그레이드를 하니 정상적으로 동작했다.

 

나와 같은 현상이 발생했다면 위에 링크를 통해 최소 버전을 확인해보자!

 

ps.테스트코드 버전은 junit5를 사용해서 예제와 다를 수 있음