Jersey MIME类型“text / xml;找不到charset = UTF-8”的麻烦

为什么在jar包中运行程序时会出现以下exception,但在netbeans中执行时却没有得到此exception?

com.sun.jersey.api.client.ClientHandlerException:Java类javax.xml.bind.JAXBElement的消息体读取器,Java类型为javax.xml.bind.JAXBElement,MIME媒体类型为text / xml; charset = UTF-没找到8

我正在使用maven和程序集插件构建我的程序。

mvn汇编:汇编

当我运行“运行文件”时,netbeans有什么不同?

我已经在jersey邮件(http://java.net/projects/jersey/lists)列表上提出了同样的问题,并收到了一个有效的答案,这让我在这里回答了我的问题。 但我必须承认,我并不完全理解问题的解决方案和原因。 所以请随意留下一些评论或新的答案。

问题似乎是,程序集插件没有正确合并某些META-INF文件。 因为我需要重新命名,所以需要重新命名!?

而不是使用组件插件为maven使用阴影插件!

在这里阅读问题和解决方案: http : //jersey.576304.n2.nabble.com/issue-with-POST-when-packaging-into-jar-td5460103.html

并在此处查看maven的阴影插件: http : //maven.apache.org/plugins/maven-shade-plugin/

不知何故找不到JAXB提供程序。 可能是一些类路径问题:在Netbeans中,类被添加到类路径中,而在maven中则没有。

我建议你比较实际的classpathes。 在Maven中,您可以通过运行mvn dependency:build-classpath来查看实际的类mvn dependency:build-classpath 。 不知道如何在Netbeans中做到这一点。