2010-06-24 3 views
1

우리 클래스 중 하나는 jdk 1.6 번들 jaxb API를 사용합니다. maven을 사용하여 컴파일하려고 할 때 (JAVA_HOME이 JDK 1.6으로 설정되고 IDE에서 maven이 JDK 1.6을 사용하여 실행됨을 보여줍니다) jaxb 라이브러리에 대한 클래스를 찾을 수 없습니다. 해당 클래스는 JDK 1.6 lib 폴더 아래의 rt.jar에 있습니다. 어떤 아이디어 ??? 당신의 pom.xml 메이븐 빌드 섹션이 플러그인을 추가Maven이 JDK 1.6 번들 라이브러리를 선택하지 않았습니다.

+0

특별히 예외는 무엇입니까? – skaffman

답변

2

음 ... 오류는 maven 컴파일 중에 사용할 수없는 sun의 내부 클래스 중 하나의 사용으로 인한 것입니다. 그것의 흥미로운 시나리오는 ...

내 프로젝트는 sun의 내부 JAXB 라이브러리에서 제공하는 NamespaceMapper를 사용합니다. 그것은 rt.jar가 classpath에 있었기 때문에 (경고가있는) 비 mavenized Eclipse 환경에서 컴파일됩니다. 우리는이 프로젝트를 장만하기 시작했고, 갑자기 ClassNotFound를 얻었습니다. 인터넷 검색을 한 후에 나는이 두 가지 게시물을 통해 나를 올바른 방향으로 가게했습니다.

http://forums.java.net/jive/thread.jspa?threadID=24225

http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg1PK88316

최하위

는 : 내부 라이브러리를 사용하지 마십시오 (패키지 이름은 그들 내부 있습니다).

1

시도 :

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.1</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

업데이트 : 그것은 작동하지 않습니다.

시도해 보셨습니까?

<dependency> 
    <groupId>javax.xml.bind</groupId> 
    <artifactId>jaxb-api</artifactId> 
    <version>2.1</version> 
    <scope>system</scope> 
    <systemPath>${java.home}/lib/rt.jar</systemPath> 
</dependency> 
+0

아니 ...이 나던 일 .... – Manoj

+0

내 두 번째 솔루션을 사용해보십시오. 죄송하지만 미안하지만이 순간에 문제를 재현 할 수 없습니다 :-) – sourcerebels

+0

안녕하세요 SourceRebels, 게시물 주셔서 감사합니다. 내 대답에 명시된 바와 같이 내부 클래스 (com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper)를 사용하는 것은 좋은 습관이 아니므로 작동하도록 만드는 것이 아니라 내부 jaxb 구현에 대한 종속성을 제거하고 jaxb ri에서 가져올 코드를 변경했습니다. 이것은 내 문제를 해결했다. – Manoj

관련 문제