Development/Troubleshooting

HHH000206: hibernate.properties not found 오류 해결하기

bbubbush 2020. 6. 20. 14:40

들어가며

처음 Hiberate를 공부하며 맞이한 오류이기에 이렇게 기록으로 남겨 보려고 한다.

환경설정부터 오류가 나니 적잖이 당황스럽지만 조금의 구글링으로 원인을 파악할 수 있었다.

 

오류발생 환경

[ 오류 발생 환경설정 ]

  • JDK 11
  • Hibernate 5.3.7.Final
  • H2 1.4.200

[ 변경한 환경설정 ]

  • JDK 8
  • Hibernate 5.3.7.Final
  • H2 1.4.200

 

오류 내용 및 원인

원인을 찾아보니 JDK 11에서는 기존의 내장되어있던 JAXB가 사라지게 되었다. 만약 JDK 버전을 변경하지 않고 사용하시려면 별도의 JAXB 라이브러리를 추가하여 문제를 해결 할 수 있다.

 

아래는 오류에 대한 Stacktrace 이다.

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
	at org.hibernate.boot.spi.XmlMappingBinderAccess.<init>(XmlMappingBinderAccess.java:43)
	at org.hibernate.boot.MetadataSources.<init>(MetadataSources.java:86)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:212)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:174)
	at org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:76)
	at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilder(HibernatePersistenceProvider.java:171)
	at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:119)
	at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:61)
	at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:50)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
	at com.bbubbush.jpa.JpaMain.main(JpaMain.java:9)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	... 12 more

 

반응형

마치며

JDK 11은 하위호환성을 열어두었던 코드들이 제거되기 시작한 버전이다. 특히 javax.xml.bind  패키지에서 발생하는 오류는 JDK 버전 문제일 가능성이 높다.

JDK 11로 버전업을 하는 경우나 다른 사람의 소스코드를 복사할 때, 본인이 JDK11을 사용한다면 이런 케이스를 제일 먼저 생각해보자.

 

 

참고 : JDK 버전에 따른 JAXB