【问题标题】:Java/JAXB/JAK error in Matlab using Marshaller使用 Marshaller 的 Matlab 中的 Java/JAXB/JAK 错误
【发布时间】:2012-03-05 14:11:46
【问题描述】:

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

javax.xml.bind.PropertyException:名称:com.sun.xml.bind.namespacePrefixMapper 值:de.micromata.opengis.kml.V_2_2_0.kml$NameSpaceBeautyfier@15cb235

在 javax.xml.helpers.AbstractMarshallerImpl.setProperty(未知来源) 在 com.sun.xml.internal.bind.V2.runtime.MarshallerImpl.setProperty(未知来源) 在 de.micromata.opengis.kml.V_2_2_0.kml.createMarshaller(kml.java:642) 在 de.micromata.opengis.kml.V_2_2_0.kml.marshal(kml.java:682)

这是与 Classpath 相关的东西吗?

感谢您的帮助。

【问题讨论】:

    标签: java matlab jaxb matlab-deployment jak


    【解决方案1】:

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

    也许您可以尝试该解决方案?

    【讨论】:

    • 是的,两者都有相同版本的库。我的第一次尝试是将库打包到 JAR 中,这样它会更便携,并且不会出现版本控制问题。然后我转移了我的 Eclipse 项目,它也有库,但也失败了。感谢您将我指向该网站。
    • 不幸的是,如果没有 One-JAR (one-jar.sourceforge.net) 等工具,您无法将外部库打包到 jar 文件中(它们不会在类路径中看到)。但是,您可以在与您的 jar 文件相同的目录中创建一个名为“lib”的目录,并且您放置在那里的任何库都应该在类路径中。
    【解决方案2】:

    您正在使用包含在 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 实现的使用。

    更多信息

    【讨论】:

      猜你喜欢
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多