2016-05-02 2 views
0

Je travaille sur un service de cartographie Web écrit en Java et utilisant la bibliothèque GeoTools. Mon but est de faire le format d'analyse de données json, donc j'utilise le form Unsupported GeoTools. Ceci est la méthode parsingJSON qui prend dans le chemin du fichier d'entrée et retourne en sortie le FeatureCollection des fichiers VEDETTE:Java Servlet: analyse geo JSON avec Geotools

public FeatureCollection parsingJSON(String path) throws FileNotFoundException, IOException, ParseException { 
     System.out.println("INTO PARSINGJSON"); 
     JSONParser parser = new JSONParser(); 

     File f = new File(path); 
     System.out.println("complete path file --->" + f.getAbsolutePath()); 

     Object obj = parser.parse(new java.io.FileReader(path)); 
     FeatureJSON fJSON = new FeatureJSON(); 
     FeatureCollection fc = fJSON.readFeatureCollection(obj.toString()); 
     return fc; 
    } 

Quand je lance le code en passant le chemin du fichier, me donne cette exception:

mag 02, 2016 4:09:42 PM org.apache.catalina.core.StandardWrapperValve invoke 
GRAVE: Servlet.service() for servlet ServletWMS threw exception 
java.lang.ClassNotFoundException: org.json.simple.parser.ParseException 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) 
    at com.lamiaservlet.servlets.ServletWMS.operation(ServletWMS.java:140) 
    at com.lamiaservlet.servlets.ServletWMS.doGet(ServletWMS.java:51) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:612) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:503) 
    at java.lang.Thread.run(Unknown Source) 

Je tiens à préciser que j'ai importé la bibliothèque correctement json-simple-1.1 et je le pom.xml suivant:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>Servlet</groupId> 
    <artifactId>Servlet</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <geotools.version>13.2</geotools.version> 
    </properties> 
    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <resources> 
     <resource> 
     <directory>src</directory> 
     <excludes> 
      <exclude>**/*.java</exclude> 
     </excludes> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
     </configuration> 
     </plugin> 
     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.4</version> 
     <configuration> 
      <warSourceDirectory>WebContent</warSourceDirectory> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.geotools</groupId> 
      <artifactId>gt-main</artifactId> 
      <version>${project.version}</version> 
     </dependency> 
     <!-- Third-party dependencies --> 
     <dependency> 
      <groupId>com.googlecode.json-simple</groupId> 
      <artifactId>json-simple</artifactId> 
      <version>1.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.geotools</groupId> 
      <artifactId>gt-epsg-hsql</artifactId> 
      <version>${project.version}</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>commons-lang</groupId> 
      <artifactId>commons-lang</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.geotools</groupId> 
      <artifactId>gt-geojson</artifactId> 
      <version>${geotools.version}</version> 
     </dependency> 
    </dependencies> 
    </dependencyManagement> 
</project> 

Répondre

0

En fait, vous n'avez pas besoin de s pecifie json-simple dans votre fichier pom car la magie de maven l'entrera automatiquement. Mais ça ne fera pas mal non plus! Je devine que votre code fonctionne bien dans Eclipse (ou autre IDE), mais échoue lorsque vous le déployez sur Tomcat.

Il semble que Maven ne LIASSES toutes les dépendances dans le fichier war - le seul problème que je peux voir avec votre pom est que vous utilisez project.version et geotools-version mais seulement définir geotools-version qui peut confondre Maven.

Non lié à votre problème, vous déclarez gt-epsg-hsql comme une dépendance de test, mais vous en aurez besoin dans votre service. Vous pouvez également utiliser le module gt-geojsondatastore car cela vous permettra d'utiliser GeoJSON de la même manière que n'importe quelle autre source de données GeoTools.

EDIT

J'ai créé un projet simple Maven et le pom suivant crée un fichier de guerre de travail avec tous les pots de GeoTools inclus lorsque vous exécutez mvn install. Si vous avez l'intention d'utiliser le référencement, vous devrez ajouter un fichier epsg comme décrit here.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.ianturton.cookbook</groupId> 
    <artifactId>simple</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <name>simple</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <geotools.version>14.3</geotools.version> 
    </properties> 
<repositories> 
    <repository> 
     <id>maven2-repository.dev.java.net</id> 
     <name>Java.net repository</name> 
     <url>http://download.java.net/maven/2</url> 
    </repository> 
    <repository> 
     <id>osgeo</id> 
     <name>Open Source Geospatial Foundation Repository</name> 
     <url>http://download.osgeo.org/webdav/geotools/</url> 
    </repository> 
    <repository> 
     <snapshots> 
     <enabled>true</enabled> 
     </snapshots> 
     <id>imageio-ext-repository</id> 
     <name>imageio-ext Repository</name> 
     <url>http://maven.geo-solutions.it/</url> 
    </repository> 
    <!-- <repository> 
    <snapshots> 
     <enabled>true</enabled> 
    </snapshots> 
    <id>boundless</id> 
    <name>Boundless Maven Repository</name> 
    <url>https://boundless.artifactoryonline.com/boundless/</url> 
    </repository> --> 
    </repositories> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.geotools</groupId> 
     <artifactId>gt-geojson</artifactId> 
     <version>${geotools.version}</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <resources> 
     <resource> 
     <directory>src</directory> 
     <excludes> 
      <exclude>**/*.java</exclude> 
     </excludes> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
     </configuration> 
     </plugin> 
     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.4</version> 
     <configuration> 
      <warSourceDirectory>WebContent</warSourceDirectory> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

me donne ce qui suit dans le fichier war:

201006 Wed Apr 20 16:32:56 BST 2016 WEB-INF/lib/gt-api-14.3.jar 
342540 Wed Oct 14 16:41:20 BST 2015 WEB-INF/lib/core-0.26.jar 
96221 Wed Oct 14 16:41:20 BST 2015 WEB-INF/lib/commons-pool-1.5.4.jar 
31693 Wed Oct 14 16:41:22 BST 2015 WEB-INF/lib/GeographicLib-Java-1.44.jar 
16046 Wed Oct 14 17:16:18 BST 2015 WEB-INF/lib/json-simple-1.1.jar 
794991 Wed Oct 14 16:41:28 BST 2015 WEB-INF/lib/jts-1.13.jar 
91347 Wed Oct 14 16:41:20 BST 2015 WEB-INF/lib/jsr-275-1.0-beta-2.jar 
345853 Wed Apr 20 16:33:04 BST 2016 WEB-INF/lib/gt-opengis-14.3.jar 
284220 Wed Oct 14 17:16:20 BST 2015 WEB-INF/lib/commons-lang-2.6.jar 
151304 Wed Oct 14 16:41:28 BST 2015 WEB-INF/lib/jdom-1.1.3.jar 
508935 Wed Apr 20 16:33:02 BST 2016 WEB-INF/lib/gt-metadata-14.3.jar 
11497 Wed Oct 14 16:41:56 BST 2015 WEB-INF/lib/jgridshift-1.0.jar 
1722452 Wed Apr 20 16:32:56 BST 2016 WEB-INF/lib/gt-main-14.3.jar 
63066 Fri May 06 11:52:30 BST 2016 WEB-INF/lib/gt-geojson-14.3.jar 
1171353 Wed Apr 20 16:33:00 BST 2016 WEB-INF/lib/gt-referencing-14.3.jar 
1900631 Wed Oct 14 16:42:16 BST 2015 WEB-INF/lib/jai_core-1.1.3.jar 
+0

je devais mettre les bibliothèques dans le répertoire lib. [RESOLU] – maxada

+0

guerre mvn devrait le faire pour vous si votre pom est correct –

+0

Je ne peux pas corriger le fichier pom.xml. Malheureusement, je travaille sur un projet initié par une autre personne, c'est le meilleur que je puisse faire, ou les ajouter manuellement. Est-ce que quelqu'un pourrait me dire comment je pourrais ajuster le fichier pom.xml? – maxada