使用Marshaller在Matlab中出现Java / JAXB / JAK错误

时间:2012-03-05 14:11:46

标签: java matlab jaxb matlab-deployment jak

我正在使用由Mathworks JA构建器创建的jar文件开发的Java程序出现问题。在这个Matlab程序中,它使用JAK为Google Earth创建一个KML文件。我在使用完整Matlab ide的开发计算机上没有任何问题。但是,当接管到只有MCR的另一台机器时,我收到以下错误:

javax.xml.bind.PropertyException:name:com.sun.xml.bind.namespacePrefixMapper value:de.micromata.opengis.kml.V_2_2_0.kml$NameSpaceBeautyfier@15cb235

at javax.xml.helpers.AbstractMarshallerImpl.setProperty(Unkown Source) at com.sun.xml.internal.bind.V2.runtime.MarshallerImpl.setProperty(Unkown Source) at de.micromata.opengis.kml.V_2_2_0.kml.createMarshaller(kml.java:642) at de.micromata.opengis.kml.V_2_2_0.kml.marshal(kml.java:682)

这是与Classpath相关的东西吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

两个系统上是否有相同版本的JAXB库?看起来它可能是版本冲突。正在搜索您的错误,我看到了这个页面:http://timepassguys.blogspot.com/2011/12/jaxb-exception-javaxxmlbindpropertyexce.html

也许你可以试试这个解决方案吗?

答案 1 :(得分:1)

您正在使用JDK(com.sun.xml.internal.bind)中包含的JAXB实现,但是正在为Metro JAXB实现指定属性(com.sun.xml.bind)。请注意,当Metro JAXB包含在JDK中时,它将经历程序包重命名。

选项

  1. 您可以使用com.sun.xml.internal.bind.namespacePrefixMapper属性。
  2. 您可以使用jaxb.properties文件指定Metro JAXB实现的使用。
  3. 了解更多信息