2014-07-17 3 views
2

Eclipse를 사용하여 Java 개발을 처음 시작한 것은 이번이 처음입니다. EclipseLink의 JPA 구현을 사용하려고합니다. 나는 모든 엔티티를 별도의 엔티티 패키지로 옮겼다. "dataModeling"이라는 별도의 JPA 프로젝트에 persistence.xml이 있습니다.Eclipse 경고 : class javax.persistence. * 찾을 수 없음

package explorer

모든 빌드하고 잘 실행됩니다.

거의 모든 프로젝트가 내 항목에 따라 다릅니다. 그러나 종속 프로젝트가 EclipseLink를 참조하지 않기 때문에 표시되는 Class javax.persistence.Entity not found - continuing with a stub. 등의 경고가 표시됩니다.

warning messages

이 솔루션은 도서관> 각 의존 프로젝트의 특성에와 자바 빌드 경로에 따라 이동 라이브러리, 다음 사용자 라이브러리 추가를 클릭하고 다음은 EclipseLink을 선택하는 것입니다.

그러나 나에게 모든 프로젝트에서 EclipseLink를 참조하는 것은 의미가 없습니다! 그것은 다른 프로젝트에 부담을주고 싶지 않은 구현 세부 사항입니다. 다른 프로젝트가 주석을보고이를 인식하지 못하기 때문에 이런 일이 발생했습니다.

실제 질문은 JPA 구현을 참조해야하는 다른 프로젝트없이 JPA (주석을 통해)를 어떻게 사용할 수 있습니까?

+0

** javax.persistence.Entity **는 ** javaee.jar ** 라이브러리의 클래스입니다. 프로젝트 클래스 패스에이 항아리가 있습니까? –

+0

@ MarkKorzhov 나와 함께 곰. 이 클래스는 EclipseLink 라이브러리에서 이미 정의되어 있습니다. 'javaee로부터 그것을 참조하는 것은 무엇입니까?병? 나는 그들이 JPA에 대해 아무 것도 모른다면 많은 프로젝트에 대한 참조를 추가하는 것을 피하려고 노력하고있다. –

+0

persistence-api.jar (일명 javax.persistence.jar). javaee.jar은 필요하지 않습니다. (나머지 JavaEE를 사용하지 않으려는 경우 !!!) –

답변

1

@ neil-stockton 및 @chris 덕분에 나는 무슨 일이 일어나고 있는지 알 수있었습니다. 대부분의 JPA 구현에는 어딘가에 떠 다니는 javax.persistence JAR 복사본이 있습니다. 그들 대부분은 다른 모든 것과 번들로 묶여있어 내 의존성 악몽으로 이어집니다. 주변에 떠돌아 다니는 사실상의 구현 인 것처럼 보이지 않습니다.

내 경우에는 Eclipse 플러그인 디렉토리 아래에 표시된 사본을 사용했습니다. 이러한 주석은 원하지 않는 종속성이없는 진정한 의미에서 비어있었습니다. JAR 파일 (javax.persistence._<version>.jar)은 Dali와 EclipseLink 플러그인 (하나 또는 다른 하나)을 추가 한 후에 나타났습니다.

7

귀하의 pom.xml이 포함되어 있어야합니다

<dependency> 
    <groupId>org.eclipse.persistence</groupId> 
    <artifactId>eclipselink</artifactId> 
    <version>2.5.1</version> 
</dependency> 
<dependency> 
    <groupId>org.eclipse.persistence</groupId> 
    <artifactId>javax.persistence</artifactId> 
    <version>2.0.0</version> 
    <scope>compile</scope> 
</dependency> 

첫 번째, 두 번째는 부족 Persistence API이다 (당신이 이미 가지고있는) Eclipse-Link이다.

maven을 사용하지 않는 경우 - javax.persistence-2.0.0.jar이 클래스 경로에 있는지 확인하십시오. 이 버전 2.0.0입니다

주, 최신은 2.1.0

갱신 이러한 의존성을 가져야한다 EntityManager 사용한다 프로젝트를합니다. 엔티티와 persistence.xml을 별개의 jar 파일에 넣어두면 위의 종속성을 충족시키는 다른 프로젝트가 필요합니다.

+0

Maven을 사용하지 않습니다. 실제로 무엇인지 모르겠습니다. 내 엔티티가 주석으로 꾸며 졌기 때문에 이클립스 프로젝트를 참조하는 이클립스 프로젝트도 EclipsleLink를 참조해야합니다. 이러한 특수 효과를 사용하지 않는 방법이 있습니까? –

+0

@TravisParks는 업데이트를 보았습니다. 'EntityManager'를 사용하는 프로젝트는 이러한 의존성을 가져야합니다. –

+0

현재 이러한 종속성이 있습니다. 내 프로젝트를 참조하는 모든 프로젝트에 대해 경고 메시지가 표시됩니다. –

관련 문제