![]() |
1
13
[一些提供JAXB-RI替代方案的编辑在本文末尾] 在绞尽脑汁之后,我终于不得不承认,对于我的环境(windowsxp上的JDK1.6.0\u12和macleopard上的JDK1.6.0\u20),如果不借助于NamespacePrefixMapper这个邪恶的东西,我就无法实现这一点。为什么它是邪恶的?因为它强制依赖于生产代码中的内部JVM类。这些类不构成JVM和代码之间可靠接口的一部分(即,它们在JVM的更新之间发生变化)。
如果你发现自己处于这种境地,这里有一个Maven片段可以帮你摆脱困境:
请注意rt.jar到一个奇怪地方的垃圾硬编码路径。您可以使用{java.home}/lib/rt.jar的组合来解决这个问题,这个组合可以在大多数操作系统上工作,但是由于Windows空间的问题不能保证。是的,您可以使用配置文件并相应地激活。。。 或者,在Ant中,您可以执行以下操作:
那么jaxb2的marshaller-Spring配置呢?好吧,这里有我自己的名字空间前缀: 春天:
然后我的命名空间前缀映射代码:
好吧,就是这样。我希望这能帮助别人避免我所经历的痛苦。哦,顺便说一句,如果您在Jetty内使用上述邪恶方法,您可能会遇到以下例外情况: java.lang.IllegalAccessError:类sun.reflect.GeneratedConstructorAccessor23无法访问其超类sun.reflect.ConstructorAccessorImpl 所以祝你好运。提示:rt.jar位于web服务器的bootclasspath中。 [显示JAXB-RI(参考实现)方法的额外编辑] 如果你能介绍 JAXB-RI libraries 在代码中,可以进行以下修改以获得相同的效果:
MyNamespacePrefixMapper:
运行Main.Main()会得到所需的输出。 |
![]() |
2
9
(大量编辑回复) http://www.example.org/abc " "www.example.org/abc" . 下面应该可以做到这一点: 主类
package-info.java包
|
![]() |
3
1
@布莱斯:你能用以下信息更新莫西的文档吗 Define Spring JAXB namespaces without using NamespacePrefixMapper 我认为这里没有描述如何配置名称空间前缀。 谢谢! |
![]() |
4
0
jdk7中的JAXB实现支持名称空间前缀。我试过JDK1.6.0Ø21,但运气不好。 |
|
user29759326 · 如何返回递归函数中的最后一个值? 3 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 3 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 3 月前 |
![]() |
rudraraj · java中未声明最终变量 4 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 4 月前 |