2014-10-28 3 views
0

Я использую объект KML в java. Я хочу экспортировать этот объект в файл. Я пытаюсь написать это с помощью библиотеки JAK, с функцией KML.marshal(), но это не успехFul. я получаю эту ошибку:Как экспортировать KML-файл с помощью библиотеки JAK или libkml -java?

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 или формат String. Только объект KMl !! пожалуйста- помогите мне !! спасибо!

ответ

0

JAK зависит от архитектуры Java для привязки XML (JAXB) для базовой сериализации XML. KML - это формат XML, поэтому вы должны добавить JAXB-банки в свой путь к классам.

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

Смежные вопросы