【问题标题】:How to export KML file with JAK library or libkml -java?如何使用 JAK 库或 libkml -java 导出 KML 文件?
【发布时间】:2014-10-28 08:40:00
【问题描述】:

我在 java 中使用 KML 对象。我想将此对象导出到文件。我尝试用 JAK 库编写这个函数,函数 KML.marshal() 但它没有成功。 我收到此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/xml/bind/marshaller/NamespacePrefixMapper
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown 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)
    at de.micromata.opengis.kml.v_2_2_0.Kml.marshal(Kml.java:759)
    at com.nice.nicetrack.KMLGenerator.toKML(KMLGenerator.java:141)
    at com.nice.nicetrack.KMLGenerator.main(KMLGenerator.java:240)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.bind.marshaller.NamespacePrefixMapper
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 17 more

我不想使用 XML 或字符串格式。只有 KMl 对象!! 请帮我!! 谢谢!

【问题讨论】:

    标签: java xml kml jak


    【解决方案1】:

    JAK 依赖于用于 XML 绑定的 Java 架构 (JAXB) 用于底层 XML 序列化。 KML 是一种 XML 格式,因此您必须将 JAXB jar 添加到您的类路径中。

    jaxb-api-2.2.jar
    jaxb-impl-2.2.jar
    

    可以在项目的 POM.XML 中找到这些依赖项。 https://github.com/micromata/javaapiforkml/blob/master/pom.xml

    如果您使用 maven 构建,您可以将 jaxb 条目直接添加到您的 pom.xml 文件中,但如果您添加 JavaAPIforKml 条目,它们应该会自动下载,如下所示:

    <dependency>
        <groupId>de.micromata.jak</groupId>
        <artifactId>JavaAPIforKml</artifactId>
        <version>2.2.1</version>
    </dependency>
    

    否则,您可以直接在 Central Maven 存储库中搜索 jar:
    https://search.maven.org/#browse

    【讨论】:

    • 您指向的版本已经很旧了。此外,JAXB 现在通过 Central Maven repo 分发,不建议使用 download.java.net。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    相关资源
    最近更新 更多