2010-05-25 4 views
1

내 현재 프로젝트에서 XSD 파일에서 JAXB beans를 생성합니다. 우리는 콩에 줄 번호 정보가 필요 그래서 나는 여기에 지정된 -Xlocator 옵션을 사용 (XSD 유효성 검사 오류 이상을!) :JAXB 로케이터 - 의존성이 누락 되었습니까?

http://java.sun.com/webservices/docs/1.6/jaxb/xjc.html

을 그러나, 나는 로케이터 클래스를 누락. JWSDP에 대한 다운로드가 전혀 보이지 않기 때문에 그 6 년 된 페이지에서 참조한 jar 파일은 어디에서도 찾을 수 없습니다.

XJC가 죽었습니까? 다른 것을 사용해야할까요?

편집 : 솔루션은 자바 1.5

답변

0

문제가 있거나 그 중 일부가 발견되었습니다. XJC는 XmlLocation 및 Locatable의 "내부"패키지 버전으로 가져 오기를 생성합니다. 왜 나 한테 묻지 마!

나는이 가져 오기를 올바른 것으로 바꾸기위한 약간의 스크립트를 작성했으며, 이제는 제대로 작동하는 것 같습니다.

+0

자바 보드에 문제가 있으므로 자바 1.8에 아직 존재합니다. https://java.net/jira/browse/JAXB-1125 – Duff

3

XJC 지금까지 죽은입니다 사용할 수있다, 그러나 당신이 참조하고 해당 페이지 고대이며, (워드 프로세서 here 참조) Java6는 JAXB 2.1 포함 JAXB 1. 적용됩니다. 오늘 구글 검색을 할 때 얻을 수있는 히트의 대부분은 쓸모없는 JAXB 1 레퍼런스를위한 것이다.

귀하의 요구 사항이 확실하지 않습니다. "콩에 줄 번호 정보가 필요합니다"란 무엇을 의미합니까?

편집 : @XmlLocation 주석을 언급했습니다. 이것은 자바 5와 함께 사용할 자바 6 및 JAXB 참조 구현 내에서 비표준 주석입니다. 클래스 이름은 com.sun.xml.bind.annotation.XmlLocation이고 javadoc은 here입니다. here에서 얻을 수있는 참조 구현입니다 (아직없는 경우).

+0

으로 수입

import com.sun.xml.internal.bind.Locatable; import com.sun.xml.internal.bind.annotation.XmlLocation; 

교체 XML 파일, 즉 줄 번호와 열 번호 (줄은 suf ficient). XJC가 (-Xlocator를 통해) 이것을 지원하고 JAXB가 @XmlLocation 주석으로 그렇게하는 것처럼 보일 지 모르지만이 종속성 없이는 작동하지 않습니다. 관련성이있는 경우 : 자바 1.5를 사용하고 있습니다. –

+0

@Wouter : 편집보기 – skaffman

+0

부록에 감사하지만 ... 어쩌면 나는 바보 같지만 그 사이트에서 적절한 다운로드를 찾을 수 없습니다. 하나의 10 메가 바이트 클래스가있는 항아리를 다운로드 할 수는 있지만 그다지 유용하지 않습니다.어디에서 올바른 항아리를 다운로드 할 수 있습니까? –

1

감사합니다. jaxb-api.jar가 Java 6 API에 이미 포함되어 있으므로 jaxb-impl.jar을 다운로드했습니다. Wouter가 언급 한 것처럼 다른 사람이 잘못된 수입을 대신 할 리눅스 스크립트가 필요한 경우를 대비하여.

프로젝트 경로로 이동하여 com.abc.generatedabc.xsd을 조정하십시오.

#!/bin/sh 
xjc -d src/ -p com.abc.generated -Xlocator abc.xsd 

FILES=$(find src/ -type f -name *.java) 
for f in $FILES 
do 
    sed -i 's/\(.*import com.sun.xml.internal.bind.Locatable;.*\)/import com.sun.xml.bind.Locatable;/g' $f 
    sed -i 's/\(.*import com.sun.xml.internal.bind.annotation.XmlLocation;.*\)/import com.sun.xml.bind.annotation.XmlLocation;/g' $f 
done 
0

메이븐 - 사용자에 대한 의존성

<dependency> 
    <groupId>com.sun.xml.bind</groupId> 
    <artifactId>jaxb-impl</artifactId> 
    <version>2.2.7</version> 
</dependency> 

를 추가하고 나는 그것이 어디에서 왔는지 각 빈 추적 할

import com.sun.xml.bind.Locatable; 
import com.sun.xml.bind.annotation.XmlLocation; 
관련 문제