2012-02-05 2 views
4

wsgen 또는 apt를 사용하여 JDK 7에서 웹 서비스 아티팩트를 생성 할 때. 경고 메시지가 다음JDK 7 또는 6에서 deprecated wsgen 또는 apt를 javac를 사용하여 대체하는 방법은 무엇입니까?

wsgen -s src -cp CLASS_PATH -d OUTPUT_DIRECTORY com.sun.WebServiceSEI 

표시

JDK 7부터 사용되지 않으며 다음 주요 JDK에서 제거 될 예정이다 com.sun.mirror 패키지에 포함 된 apt 툴 및 관련 API 해제. 주석을 처리하려면 javac 도구에서 사용할 수있는 옵션과 javax.annotation.processing 및 javax.lang.model 패키지에 포함 된 API를 사용하십시오.

wsgen을 사용하거나이 경고를 제거하지 않고 웹 서비스 아티팩트를 생성하려면 어떻게해야합니까?

+0

Sun에서 일하십니까? 그렇지 않다면 왜 SEI를'com.sun' 패키지에 넣기로 결정 했습니까? –

+0

디렉토리 구조 com.sun의 패키징이 wsgen에서 작동하지 않습니까? 샘플 sei com.sun.WebServiceSEI를 방금 제공했습니다. 내 질문은 뭔가 다른거야? 제 질문에 대답 해 주시겠습니까? – Baha

답변

1

WsgenTool 클래스가 com.sun.mirror.apt 패키지의 클래스를 사용 중이므로 경고가 생성됩니다.이 패키지는 JDK7에서 사용되지 않을 것으로 보입니다. 저는 JAX-WS 팀이이 API를 사용하지 않는 jaxws-ri를 릴리스 할 것이라고 생각하지만, JDK8 릴리스와 가까운 곳에서 발생할 수 있습니다.

+0

그러나 JDK 7과 함께 제공되는 wsgen을 사용하고 있습니다. – Baha

+1

AFAIK,'wsgen'은 JDK의 일부가 아닙니다. JAX-WS가 SEI에서 WSDL을 생성 할 수 있기 때문에 잘못되었을 수도 있습니다 ... 어쨌든 wsgen 부분이 업데이트되지 않은 것처럼 보입니다. 'wsgen'을 실행할 때 클래스 패스는 무엇입니까? –

+1

JDK_HOME \ bin 폴더에서 JDK 7 업데이트 1 wsgen.exe를 사용하고 있습니다. 내 클래스 패스에는 jaxws-ri 2.2.5 라이브러리가 있습니다. SEI를 컴파일 할 때 라이브러리를 사용하지만 wsgen을 실행하면 클래스 경로에 없습니다. 방금 ​​https://blogs.oracle.com/darcy/entry/apt_ending 및 https://blogs.oracle.com/darcy/entry/the_passing_of_apt에 대한 유용한 링크가 있습니다. 이 링크는 jax-ws의 일부가 jdk에 있음을 지정하고 향후 jdk8에서 apt를 제거하기 위해 변경 사항을 커밋했습니다. jdk 7에서 apt를 제거할지 여부는 아직 확실하지 않습니다. – Baha

0

Im 두려워 할 수는 없습니다. 당신이 할 수있는 일은 당신을 위해 일해 왔던 오래된 JDK로 되돌아가는 것입니다. 이것이 최선책입니다.

2

javac가 대신합니다. 그들은 잠시 뒤로 javac (JSR 269 : Pluggable Annotation Processing API)에 플러그 형 주석 처리 시스템을 추가했습니다 (Java 6 생각). 찾고있는 주석 처리기는 jaxws-tools.jar (Metro 다운로드)에 있습니다. 클래스 패스에 해당 항아리가 있으면 -processor com.sun.tools.ws.processor.modeler.annotation.WebServiceAp 옵션을 사용하여 javac을 실행할 수 있어야합니다. 또한 Ant 태스크 인 com.sun.tools.ws.ant.AnnotationProcessingTask가 있습니다. 그들은 그것에 대해 약간 여기 http://jax-ws.java.net/nonav/2.2.6/docs/ch04.html#tools-annotation-processing 이야기하지만 실제로 그것을 설명하지 않습니다. 어쩌면 필요한 주석 처리기가 JDK와 함께 제공 될 수도 있지만 그렇다면 찾을 수 없습니다.