0

我在 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 对象!!请帮我!!谢谢!

4

1 回答 1

0

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

于 2014-10-28T13:54:37.807 回答