2014-10-28 25 views
0

我在java中使用KML对象。我想将这个对象导出到文件。我尝试使用函数KML.marshal()来写入JAK库,但它不是successFul。 我得到这个错误:如何使用JAK库或libkml -java导出KML文件?

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

回答

0

JAK依赖于基于XML序列化的Java绑定XML架构(JAXB)。 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> 

否则,您可以直接搜索中央Maven存储库中的罐子:
https://search.maven.org/#browse

+0

您指向的版本已经很旧了。此外,JAXB现在通过Central Maven回购分发,因此不推荐使用download.java.net。 – lexicore 2014-11-05 05:39:53

相关问题