Spring Framework/Spring

Unable to locate persistence units 에러

Razelo 2021. 1. 29. 18:26

JPA 프로젝트에서 하이버네이트를 JPA 구현체로 사용하여 실행결과를 로그로 출력하는 프로젝트를 만들고 있었는데, 

 

에러가 발생했다. 

 

에러를 거슬러 올라가면서 고쳤기 때문에 그 순서대로 원인과 해결방법을 설명하겠다. 

 

우선 가장 처음의 에러는 XML 버전 2.2를 인식할 수 없다는 에러였다. 

위에 동그라미 친 곳을 보면 버전이 2.1로 되어있는 것을 알 수 있다. 내가 다시 수정했기 때문에 2.1로 적용이 가능한 것이다.

 

수정하기 전에는 2.2버전으로 써놓았었는데, 이때 2.2버전을 인식할 수 없다는 에러가 발생한 것이다. 

 

그래서 다음과 같이 porm.xml을 써놓았다. 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.springbook.biz.board</groupId>
	<artifactId>JPAProject</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>JPAProject</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<!-- JPA, 하이버네이트 -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-entitymanager</artifactId>
			<version>5.1.0.Final</version>
		</dependency>
		
		<!-- H2 데이터베이스 -->
		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<version>1.4.196</version>
		</dependency>
		
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		
				<!-- JAXB2 API -->
 <!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
 		<dependency>
     		<groupId>javax.xml.bind</groupId>
     		<artifactId>jaxb-api</artifactId>
     		<version>2.3.0-b170201.1204</version>
 		</dependency>

  <!-- https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-runtime -->
 		<dependency>
     		<groupId>org.glassfish.jaxb</groupId>
     		<artifactId>jaxb-runtime</artifactId>
     		<version>2.3.0-b170127.1453</version>
 		</dependency>
	</dependencies>
</project>

JPA와 하이버네이트와 H2 DATABASE 의 dependency를 수정해준 것이다. 그랬더니 2.1 버전이 적용가능한 상태가 되었다. 

 

그리고 나서 다시 서버를 애플리케이션을 구동했는데, 

 

JAXB를 찾을 수 없다는 에러가 발생했다. 이 에러는 저번 포스팅에서도 다룬 적이 있는데, 자바 8까지만 자동으로 지원해주고, 그 이후부터는 지원해주지 않기 때문에 내가 따로 설정해줘야 한다고 말했다. 

 

그래서 위에 코드를 보면 밑에서 첫번째와 두번째 dependency가 보일 텐데 그 설정들이 JAXB 설정이라고 보면된다. 

 

그래서 이를 통해 에러를 해결할 수 있었고, 결과적으로는 다음과 같이 하이버네이트의 실행결과를 확인할 수 있었다. 

 

반응형