2014-10-28 77 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

相關問題