2016-08-28 5 views
1

CXF 기반 응용 프로그램 서버용 uber JAR을 만들고 싶습니다. 명령 행에서 java -jar으로 서버에 연결하고 싶습니다. IDE에서 주 클래스 com.connexta.desertcodecamp.Server을 실행할 수는 있지만 uber jar 파일을 제대로 작성하지 않았습니다.Nopace에 DestinationFactory가 없습니다. - Jetty가있는 CXF의 uber JAR을 만듭니다.

내가 명령 java -jar server-1.0-SNAPSHOT.jar을 실행하면, 내가 여기

org.apache.cxf.service.factory.ServiceConstructionException 
     at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:215) 
     at com.connexta.desertcodecamp.Server.<init>(Server.java:19) 
     at com.connexta.desertcodecamp.Server.main(Server.java:33) 
Caused by: org.apache.cxf.BusException: No DestinationFactory was found for the namespace http://cxf.apache.org/transports/http. 
     at org.apache.cxf.bus.managers.DestinationFactoryManagerImpl.getDestinationFactory(DestinationFactoryManagerImpl.java:122) 
     at org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:79) 
     at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:63) 
     at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:170) 

는 POM 파일 (및 GitHub의의의 repo)에 대한 링크입니다 얻을 : https://github.com/ahoffer/desert-code-camp/blob/master/server/pom.xml

다른 게시물 참조 누락 된 의존성, cxf-rt-transports-http하지만, 나는 그것을 POM.xml에 종속되어있다.

+0

당신은 결합 된 항아리에 그것을 가지고 있습니까? _How_ 병을 어떻게 결합 했습니까? – bmargulies

+0

@bmargulies 나는이 질문에 답하기에 충분하지 않습니다. 나는이 경우 결합의 의미를 모른다. maven 종속성으로 cxf-rt-transports-http를 포함 시켰습니다. 모든 의존성이 음영 처리 된 JAR에 들어갈 것이라고 가정했습니다. – ahoffer

답변

2

해결책은 여기에 있습니다 : apache camel - packaging an executable jar 및 여기 : Missing cxf.xml? Fails in maven, works in Eclipse. 받는다는 그늘 플러그의 구성 부분이 트랜스 마법 리소스 추가

를 해결

<transformer org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
    <resource>META-INF/cxf/bus-extensions.txt</resource> 
</transformer> 

리소스가 플러그인에 의해 생성되고; 그것을 만들 필요가 없습니다