没有找到命名空间的DestinationFactory -使用Jetty创建CXF的优JAR



我想为一个基于cxf的应用服务器创建一个uber JAR。我想用java -jar从命令行运行服务器。在IDE中,我可以运行主类com.connexta.desertcodecamp.Server,但我没有正确创建优步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中将其作为依赖项。

解决方案在这里:apache camel -打包一个可执行的jar这里:缺少cxf.xml?在maven中失败,在Eclipse中工作。

将这个转换器和魔法资源添加到maven shade插件的配置部分可以修复它:

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

资源由插件生成;不需要创建

最新更新