Installation GDAL pas totallement fonctionnelle

313 views
Skip to first unread message

Julien Sabatier

unread,
Oct 24, 2014, 3:52:50 AM10/24/14
to georche...@googlegroups.com
Bonjour,

Je reviens une nouvelle fois sur ma configuration de GDAL car ayant appris il y a peu à utiliser les profils de compilation, j'ai voulu ajouter quelques extensions à mon geoserver : 

./mvn -Dserver=siglepuy -DskipTests -Pgeofence -Pgdal,imagemap,libjpeg-turbo,ogr,wps,w3ds,jp2k,geosearch,inspire,kml,charts

J'avais installé GDAL sur le serveur comme expliqué à la fin de ce Post : https://groups.google.com/forum/#!topic/georchestra/c3OxqiVl4nU

 Cela fonctionnait, mais l'ajout de ces options de compilation a généré des erreurs dans les logs Tomcat :

AVERTISSEMENT: Failed to get the specified GDAL Driver: AIG
Cause: java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.SWIGDriverUpcast(J)J
This is not a problem unless you need to use the specified GDAL plugin. It won't be enabled
oct. 24, 2014 9:40:22 AM it.geosolutions.imageio.gdalframework.GDALUtilities isDriverAvailable
AVERTISSEMENT: Failed to get the specified GDAL Driver: NITF
Cause: java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.SWIGDriverUpcast(J)J
This is not a problem unless you need to use the specified GDAL plugin. It won't be enabled
oct. 24, 2014 9:40:22 AM it.geosolutions.imageio.gdalframework.GDALUtilities isDriverAvailable
AVERTISSEMENT: Failed to get the specified GDAL Driver: HFA
Cause: java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.SWIGDriverUpcast(J)J
This is not a problem unless you need to use the specified GDAL plugin. It won't be enabled
oct. 24, 2014 9:40:22 AM it.geosolutions.imageio.gdalframework.GDALUtilities isDriverAvailable
AVERTISSEMENT: Failed to get the specified GDAL Driver: RST
Cause: java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.SWIGDriverUpcast(J)J
This is not a problem unless you need to use the specified GDAL plugin. It won't be enabled
oct. 24, 2014 9:40:22 AM it.geosolutions.imageio.gdalframework.GDALUtilities isDriverAvailable
AVERTISSEMENT: Failed to get the specified GDAL Driver: DTED
Cause: java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.SWIGDriverUpcast(J)J
This is not a problem unless you need to use the specified GDAL plugin. It won't be enabled
oct. 24, 2014 9:40:22 AM it.geosolutions.imageio.gdalframework.GDALUtilities isDriverAvailable
AVERTISSEMENT: Failed to get the specified GDAL Driver: ENVI
Cause: java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.SWIGDriverUpcast(J)J
This is not a problem unless you need to use the specified GDAL plugin. It won't be enabled
oct. 24, 2014 9:40:22 AM it.geosolutions.imageio.gdalframework.GDALUtilities isDriverAvailable
AVERTISSEMENT: Failed to get the specified GDAL Driver: RPFTOC
Cause: java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.SWIGDriverUpcast(J)J
This is not a problem unless you need to use the specified GDAL plugin. It won't be enabled
oct. 24, 2014 9:40:22 AM it.geosolutions.imageio.gdalframework.GDALUtilities isDriverAvailable
AVERTISSEMENT: Failed to get the specified GDAL Driver: EHdr
Cause: java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.SWIGDriverUpcast(J)J

Pensez-vous que je doive totalement revoir ma procedure d'installation de GDAL, ou est-il possible d'ajouter ces drivers GDAL simplement ?

Cordialement

Julien SABATIER
CA Le Puy en Velay

Pierre Mauduit

unread,
Oct 24, 2014, 4:18:11 AM10/24/14
to georche...@googlegroups.com
> Cela fonctionnait, mais l'ajout de ces options de compilation a généré des
> erreurs dans les logs Tomcat :
>
>
> oct. 24, 2014 9:40:22 AM
> it.geosolutions.imageio.gdalframework.GDALUtilities isDriverAvailable
> AVERTISSEMENT: Failed to get the specified GDAL Driver: EHdr
> Cause: java.lang.UnsatisfiedLinkError:
> org.gdal.gdal.gdalJNI.SWIGDriverUpcast(J)J
>
>
> Pensez-vous que je doive totalement revoir ma procedure d'installation de GDAL,
> ou est-il possible d'ajouter ces drivers GDAL simplement ?

Ce genre d'erreurs laisse penser que vous utilisez une version des bindings jars
incompatibles avec les bibliothèques natives accessibles par la JVM.

Vérifiez les jars inclus dans vos webapps, mais cela signifie déjà que vous etes
sur la bonne voie, car votre JVM semble déjà capable de résoudre les
bibliothèques natives et arrive à les charger (System.loadLibrary). C'est au
niveau bindings jars -> passage code natif qu'il semble y avoir un problème.

Avez-vous d'ailleurs suivi une doc (de georchestra) pour l'installation des libs
natives ? Il y a un certain nombre d'explications au sujet des bindings GDAL
disponibles dans la doc.

-- Pierre

Julien Sabatier

unread,
Oct 24, 2014, 7:48:59 AM10/24/14
to georche...@googlegroups.com
Les natives libs que j'ai installé sont celles fournies par Apache et j'ai suivi ce tuto pour les compiler et installer : http://tomcat.apache.org/native-doc/

J'ai retenté de suivre le tuto proposé ici : https://github.com/georchestra/georchestra/blob/14.06/INSTALL.md

Déjà en essayant d'installer le JAI, il ne passe pas à true dans geoserver : 

J'ai pourtant créé des liens symboliques vers les 5 jars mentionnés dans /opt/tomcat6/lib, et ajouté au fichier /opt/tomcat6/bin/setenv.sh :

JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/opt/tomcat6/lib"

Est-il dépendant des NativeLibs ?

Je vais réessayer en suivant uniquement le tuto Georchestra basé sur http://sdi.georchestra.org/~pmauduit/gdalogr-java-bindings/ au lieu de ceux fournis par Apache.

Pierre Mauduit

unread,
Oct 24, 2014, 8:16:59 AM10/24/14
to georche...@googlegroups.com
Julien Sabatier a écrit :
> Les natives libs que j'ai installé sont celles fournies par Apache et j'ai
> suivi ce tuto pour les compiler et installer : [1]http://tomcat.apache.org/
> native-doc/

Nous ne nous préoccuppons en général pas des natives lib tomcat, mais vous
pouvez les installer si vous le souhaitez.


>
> J'ai retenté de suivre le tuto proposé ici : https://github.com/georchestra/
> georchestra/blob/14.06/INSTALL.md
>
> Déjà en essayant d'installer le JAI, il ne passe pas à true dans geoserver :
>
> J'ai pourtant créé des liens symboliques vers les 5 jars mentionnés dans /opt/
> tomcat6/lib, et ajouté au fichier /opt/tomcat6/bin/setenv.sh :
>
>
> JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/opt/tomcat6/lib"
>
>
> Est-il dépendant des NativeLibs ?

Le java.library.path indique effectivement à la jvm où chercher (en plus
probablement du path "officiel" - /usr/lib et consorts ; je n'ai plus vraiment
les détails en tête mais cela me paraitrait logique) les bibliothèques natives.

Vous pouvez y adjoindre le path de là où vous installerez mes packages, mais
assurez-vous qu'il n'y a pas de problème vis à vis des bibliothèques (j'ai fait
les packages il y a un petit moment, possible que dans debian il y ait eu des
montées de version sur certaines libs). Vous pouvez verifier en lançant la
commande ldd:

pmauduit@georchestra-01:/opt/gdal/lib$ ldd libgdal.so.1.16.2

Le résultat de la commande ne doit pas renvoyer de (NOT FOUND).


>
> Je vais réessayer en suivant uniquement le tuto Georchestra basé sur [2]http://
> sdi.georchestra.org/~pmauduit/gdalogr-java-bindings/ au lieu de ceux fournis
> par Apache.

c.f. manip décrite ci-dessus ;


-- Pierre

Julien Sabatier

unread,
Oct 24, 2014, 9:08:45 AM10/24/14
to georche...@googlegroups.com
Vous pouvez verifier en lançant la 
commande ldd: 
pmauduit@georchestra-01:/opt/gdal/lib$ ldd libgdal.so.1.16.2 
Le résultat de la commande ne doit pas renvoyer de (NOT FOUND).

 Malheureusement sa ne correpond pas :(

root@GeoServer:/opt/gdal-georchestra/lib# ls
gdalplugins  libgdal.la  libgdal.so.1       perl5
libgdal.a    libgdal.so  libgdal.so.1.17.1  python2.7

Du coup jai essayé

root@GeoServer:/opt/gdal-georchestra/lib# ldd libgdal.so.1.17.1
        linux-vdso.so.1 =>  (0x00007fffd4bff000)
        libarmadillo.so.3 => /usr/lib/libarmadillo.so.3 (0x00007f269eb91000)
        libproj.so.0 => /usr/lib/libproj.so.0 (0x00007f269e94e000)
        libpoppler.so.19 => /usr/lib/x86_64-linux-gnu/libpoppler.so.19 (0x00007f269e53c000)
        libfreexl.so.1 => /usr/lib/x86_64-linux-gnu/libfreexl.so.1 (0x00007f269e332000)
        libgeos_c.so.1 => /usr/lib/libgeos_c.so.1 (0x00007f269e10b000)
        libepsilon.so.0 => /usr/lib/libepsilon.so.0 (0x00007f269def2000)
        libodbc.so.1 => /usr/lib/x86_64-linux-gnu/libodbc.so.1 (0x00007f269dc8a000)
        libodbcinst.so.1 => /usr/lib/x86_64-linux-gnu/libodbcinst.so.1 (0x00007f269da78000)
        libkmldom.so.0 => /usr/lib/libkmldom.so.0 (0x00007f269d6e2000)
        libkmlbase.so.0 => /usr/lib/libkmlbase.so.0 (0x00007f269d4be000)
        libkmlengine.so.0 => /usr/lib/libkmlengine.so.0 (0x00007f269d218000)
        libkmlconvenience.so.0 => /usr/lib/libkmlconvenience.so.0 (0x00007f269cfc6000)
        libminizip.so.0 => /usr/lib/libminizip.so.0 (0x00007f269cdbd000)
        liburiparser.so.1 => /usr/lib/liburiparser.so.1 (0x00007f269cba3000)
        libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f269c978000)
        libxerces-c.so.28 => /usr/lib/libxerces-c.so.28 (0x00007f269c39e000)
        libjasper.so.1 => /usr/lib/x86_64-linux-gnu/libjasper.so.1 (0x00007f269c143000)
        libnetcdf.so.7 => /usr/lib/libnetcdf.so.7 (0x00007f269bdf9000)
        libhdf5.so.7 => /usr/lib/libhdf5.so.7 (0x00007f269b93b000)
        libmfhdfalt.so.0 => /usr/lib/libmfhdfalt.so.0 (0x00007f269b718000)
        libdfalt.so.0 => /usr/lib/libdfalt.so.0 (0x00007f269b475000)
        libogdi.so.3.2 => /usr/lib/libogdi.so.3.2 (0x00007f269b254000)
        libgif.so.4 => /usr/lib/libgif.so.4 (0x00007f269b04b000)
        libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007f269ae10000)
        libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f269abe9000)
        libpq.so.5 => /usr/lib/libpq.so.5 (0x00007f269a9bc000)
        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f269a798000)
        libdapclient.so.3 => /usr/lib/x86_64-linux-gnu/libdapclient.so.3 (0x00007f269a562000)
        libdapserver.so.7 => /usr/lib/x86_64-linux-gnu/libdapserver.so.7 (0x00007f269a352000)
        libdap.so.11 => /usr/lib/x86_64-linux-gnu/libdap.so.11 (0x00007f269a069000)
        libspatialite.so.3 => /usr/lib/libspatialite.so.3 (0x00007f2699b50000)
        libcurl-gnutls.so.4 => /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 (0x00007f26998ec000)
        libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f269958b000)
        libmysqlclient.so.18 => /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 (0x00007f2699043000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2698e27000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f2698c0f000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f2698a07000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2698803000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f26984fb000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2698279000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2697eee000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f2697cd7000)
        libblas.so.3 => /usr/lib/libblas.so.3 (0x00007f2697a37000)
        liblapack.so.3 => /usr/lib/liblapack.so.3 (0x00007f2696e66000)
        liblcms.so.1 => /usr/lib/x86_64-linux-gnu/liblcms.so.1 (0x00007f2696c2b000)
        libtiff.so.4 => /usr/lib/x86_64-linux-gnu/libtiff.so.4 (0x00007f26969c5000)
        libopenjpeg.so.2 => /usr/lib/x86_64-linux-gnu/libopenjpeg.so.2 (0x00007f26967a3000)
        libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f2696503000)
        libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f26962cc000)
        libgeos-3.3.3.so => /usr/lib/libgeos-3.3.3.so (0x00007f2695f3a000)
        libpopt.so.0 => /lib/x86_64-linux-gnu/libpopt.so.0 (0x00007f2695d2c000)
        libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 (0x00007f2695b23000)
        libicuuc.so.48 => /usr/lib/x86_64-linux-gnu/libicuuc.so.48 (0x00007f26959b1000)
        libicudata.so.48 => /usr/lib/x86_64-linux-gnu/libicudata.so.48 (0x00007f2694840000)
        libhdf5_hl.so.7 => /usr/lib/libhdf5_hl.so.7 (0x00007f2694612000)
        libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f26943b1000)
        libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f2693fb9000)
        libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f2693ce4000)
        libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f2693ae0000)
        libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f26938a1000)
        libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007f269364f000)
        libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f269344a000)
        libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f269319e000)
        libidn.so.11 => /usr/lib/x86_64-linux-gnu/libidn.so.11 (0x00007f2692f6a000)
        libssh2.so.1 => /usr/lib/x86_64-linux-gnu/libssh2.so.1 (0x00007f2692d41000)
        liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007f2692b31000)
        libgnutls.so.26 => /usr/lib/x86_64-linux-gnu/libgnutls.so.26 (0x00007f2692871000)
        libgcrypt.so.11 => /lib/x86_64-linux-gnu/libgcrypt.so.11 (0x00007f26925f3000)
        librtmp.so.0 => /usr/lib/x86_64-linux-gnu/librtmp.so.0 (0x00007f26923d8000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f269fc51000)
        libgfortran.so.3 => /usr/lib/x86_64-linux-gnu/libgfortran.so.3 (0x00007f26920c2000)
        libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007f2691e8c000)
        libjbig.so.0 => /usr/lib/x86_64-linux-gnu/libjbig.so.0 (0x00007f2691c7e000)
        libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f2691a54000)
        libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f269184b000)
        libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f2691647000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f2691430000)
        libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007f2691215000)
        libtasn1.so.3 => /usr/lib/x86_64-linux-gnu/libtasn1.so.3 (0x00007f2691003000)
        libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f2690df1000)
        libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f2690bee000) 

Et il ne semble pas y avoir de soucis.

Je tiens à préciser que je n'ai pas de soucis concernant le chargement de GDAL sur mon install de base :

oct. 24, 2014 3:03:17 PM it.geosolutions.imageio.gdalframework.GDALUtilities loadGDAL
INFOS: GDAL Native Library loaded (version: 1.10.1)
oct. 24, 2014 3:03:17 PM it.geosolutions.imageio.plugins.turbojpeg.TurboJpegUtilities load
INFOS: TurboJPEG library loaded (turbojpeg) 

En revanche il semble manquer des drivers GDAL par exemple :

oct. 24, 2014 3:03:22 PM it.geosolutions.imageio.gdalframework.GDALUtilities isDriverAvailable

AVERTISSEMENT: Failed to get the specified GDAL Driver: ENVI
Cause: java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.SWIGDriverUpcast(J)J
This is not a problem unless you need to use the specified GDAL plugin. It won't be enabled

Je veux préciser qu'apres avoir recompilé avec les profils cités, je n'ai pas installé de drivers supplémentaire.

En revanche je viens de réussir à installer la lib TurboJPEG :)

Etais-je censé installer ces drivers ? Ou sont-ils censé être integré de base à GDAL ? 

Pierre Mauduit

unread,
Oct 24, 2014, 9:35:27 AM10/24/14
to georche...@googlegroups.com
Julien Sabatier a écrit :
> Vous pouvez verifier en lançant la
> commande ldd:
> pmauduit@georchestra-01:/opt/gdal/lib$ ldd libgdal.so.1.16.2
> Le résultat de la commande ne doit pas renvoyer de (NOT FOUND).
>
>
> Malheureusement sa ne correpond pas :(

Oui, l'exemple ci-dessus correspondait à une ancienne version de debian (6).

> En revanche je viens de réussir à installer la lib TurboJPEG :)
>
> Etais-je censé installer ces drivers ? Ou sont-ils censé être integré de base à
> GDAL ?

Ils sont censés être dans la version de GDAL que vous utilisez (du moins un
gdal-*.jar s'attend à les trouver dans la lib native), puisqu'ils correspondent
à des choix de compilation au niveau de gdal.

En résumé, Il y a des explications un peu longues ici pour comprendre ce qui se
passe d'un point de vue système:

https://github.com/georchestra/georchestra/blob/14.06/geoserver/NATIVE_LIBS.md

Je pense que vous êtes toujours confronté à un problème de jar ne correspondant
pas aux lib natives que vous tentez d'indiquer à la jvm. Il est très probable
que geoserver embarque une version de jar pour GDAL qui soit problématique, à
vérifier dans le WEB-INF/lib de la webapp.

Dernière note: autant il est possible de faire cohabiter mapfishapp et
extractorapp (qui utilisent tous deux les bindings gdal/ogr) au sein de la même
JVM, autant on n'a jamais réussi à le faire à ma connaissance avec GeoServer ;
par ailleurs, historiquement sur les installations de geOrchestra, il a toujours
été très courant d'isoler geoserver dans sont tomcat propre.

-- Pierre

Julien Sabatier

unread,
Oct 24, 2014, 10:07:05 AM10/24/14
to georche...@googlegroups.com
Je pense que vous êtes toujours confronté à un problème de jar ne correspondant pas aux lib natives que vous tentez d'indiquer à la jvm. Il est très probable que geoserver embarque une version de jar pour GDAL qui soit problématique, à vérifier dans le WEB-INF/lib de la webapp.

En effet ma webapp geoserver contenait un fichier  /opt/tomcat6/webapps/geoserver/WEB-INF/lib/gdal-2.3.2.jar que j'ai supprimé, mais après avoir relancé tomcat l'erreur persiste.

J'ai également remarqué qu'il contenait les fichiers jai_codec-1.1.3.jarjai_core-1.1.3.jar et jai_imageio-1.1.jar qui sont également pour mon install des JAI chargés depuis /opt/tomcat6/shared, dois-je également les supprimer ?

Julien Sabatier

unread,
Oct 24, 2014, 10:13:36 AM10/24/14
to georche...@googlegroups.com
Pour info j'avais utilisé le GDAL disponible sur http://sdi.georchestra.org/~pmauduit/gdalogr-java-bindings/

Or il me semble que la version de GDAL chargée par geoserver est la 1.10.1 : 

oct. 24, 2014 3:03:17 PM it.geosolutions.imageio.gdalframework.GDALUtilities loadGDAL
INFOS: GDAL Native Library loaded (version: 1.10.1)

Savez-vous si votre gdal.jar correspond à cette version des Native Libs ? 

Pierre Mauduit

unread,
Oct 24, 2014, 10:57:19 AM10/24/14
to georche...@googlegroups.com
Julien Sabatier a écrit :
> Pour info j'avais utilisé le GDAL disponible sur [1]http://sdi.georchestra.org/
> ~pmauduit/gdalogr-java-bindings/
>
> Or il me semble que la version de GDAL chargée par geoserver est la 1.10.1 :
>
>
> oct. 24, 2014 3:03:17 PM it.geosolutions.imageio.
> gdalframework.GDALUtilities loadGDAL
> INFOS: GDAL Native Library loaded (version: 1.10.1)
>
>
> Savez-vous si votre gdal.jar correspond à cette version des Native Libs ?

Il faut que le gdal.jar corresponde à la version compilée de la lib, les deux
sont générés en même temps lors de la compilation de GDAL (ce que les devs de
geotools ne comprennent d'ailleurs pas, ce qui nous force à exclure des jars
problématiques du système de build, cf [1]). Le fait qu'une version du jar se
retrouve dans les webapps est un problème (difficilement résoluble d'ailleurs).

De mémoire, la version de gdal que je fournis sur sdi.georchestra.org pour
debian7 est bien la 1.10.1.


[1] https://github.com/geotools/geotools/pull/443#discussion_r13911004

-- Pierre

Julien Sabatier

unread,
Oct 27, 2014, 6:08:31 AM10/27/14
to georche...@googlegroups.com
A partir du lien de votre dernier message, j'ai pu voir que la version unstable de Debian proposait un paquet pour la gestion des bindings java, j'ai donc pu simplifier ma procedure en installant simplement le paquet "libgdal-java".

J'ai ensuite renseigner mon setenv.sh pour charger cette version de GDAL : 

export LD_LIBRARY_PATH="/lib:/usr/lib/jni:/usr/share/java"
export JAVA_OPTS="$JAVA_OPTS -Xms2G -Xmx2G -XX:PermSize=256m -XX:MaxPermSize=256m  -Djava.awt.headless=true -Dfile.encoding=UTF8 -Djavax.servlet.request.encoding=UTF-8  -Djavax.servlet.response.encoding=UTF-8 -server -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:ParallelGCThreads=2 -XX:SoftRefLRUPolicyMSPerMB=36000 -XX:NewRatio=2  -XX:+AggressiveOpts"
export JAVA_OPTS="$JAVA_OPTS -DGEOSERVER_DATA_DIR=/home/sig/geoserver_datadir  -DGEOWEBCACHE_CACHE_DIR=/home/sig/geowebcache_datadir"
export GDAL_DATA="/usr/share/gdal/1.10/"
export JAVA_OPTS="$JAVA_OPTS -DGDAL_DATA=$GDAL_DATA"
export JAVA_OPTS="$JAVA_OPTS -Djava.library.path=$LD_LIBRARY_PATH"

Puis supprimé le fichier gdal-2.3.2.jar du dossier lib de la webapp GeoServer.

Je pensais que cela réglerais le problème de compatibilité des versions...

Malheureusement mes logs Tomcat me disent toujours que GDAL est chargé mais qu'il ne trouve pas certains drivers (ENVI, HFA, RST, EHdr, etc...)

La version des Natives GDAL chargée est toujours la 1.10.1 :
INFO: GDAL Native Library loaded (version: 1.10.1)

Le gdal.jar chargé est celui fourni par le paquet debian unstable : https://packages.debian.org/fr/sid/amd64/libgdal-java/filelist

J'ai essayé de rechercher si d'autres jars pouvaient s'y substituer mais je n'en vois plus : 

root@geoserver:~# find / -name *gdal*
/usr/share/java/gdal.jar
/usr/share/doc/libgdal1h
/usr/share/doc/libgdal-java
/usr/share/lintian/overrides/libgdal1h
/usr/share/gdal
/usr/share/gdal/1.10/gdalicon.png
/usr/share/gdal/1.10/gdal_datum.csv
/usr/lib/jni/libgdalconstjni.so
/usr/lib/jni/libgdaljni.so
/usr/lib/libgdal.so.1
/usr/lib/libgdal.so.1.17.1
/usr/lib/ogdi/libgdal.so
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdalecwjp2-1.1.7.jar
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdalmrsidjp2-1.1.7.jar
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdalarcbinarygrid-1.1.7.j                                                                                                                                                             ar
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdalrpftoc-1.1.7.jar
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdalidrisi-1.1.7.jar
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdalframework-1.1.7.jar
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdalmrsid-1.1.7.jar
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdalehdr-1.1.7.jar
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdalecw-1.1.7.jar
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdalkakadujp2-1.1.7.jar
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdalnitf-1.1.7.jar
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdalerdasimg-1.1.7.jar
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdalenvihdr-1.1.7.jar
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/gt-imageio-ext-gdal-9.2.jar
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdaldted-1.1.7.jar
/opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdal-bindings-1.9.2.jar
/var/cache/apt/archives/libgdal-java_1.10.1+dfsg-8+b3_amd64.deb
/var/cache/apt/archives/libgdal1h_1.10.1+dfsg-8+b3_amd64.deb
/var/lib/dpkg/info/libgdal1h.shlibs
/var/lib/dpkg/info/libgdal1h.list
/var/lib/dpkg/info/libgdal1h.postinst
/var/lib/dpkg/info/libgdal1h.postrm
/var/lib/dpkg/info/libgdal1h.symbols
/var/lib/dpkg/info/libgdal-java.list
/var/lib/dpkg/info/libgdal-java.md5sums
/var/lib/dpkg/info/libgdal1h.md5sums

Y-a-t-il un moyen de vérifier quelle est la version du gdal.jar compilée et si elle correspond à ma native lib ?

Julien Sabatier

unread,
Oct 27, 2014, 6:52:11 AM10/27/14
to georche...@googlegroups.com
Bon j'ai finalement trouvé un imageio-ext-gdal-bindings-1.9.2.jar à supprimer dans mon geoserver.

Les erreures relatives aux drivers GDAL ont disparues, mais le GeoServer ne se lance plus et voici ce que j'ai dans mes logs : 

27 Oct 11:47:27 ERROR [context.ContextLoader] - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'restWrapper' defined in URL [jar:file:/opt/tomcat6/webapps/geoserver/WEB-INF/lib/rest-2.3.2.jar!/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'storeFileFinder' defined in URL [jar:file:/opt/tomcat6/webapps/geoserver/WEB-INF/lib/restconfig-2.3.2.jar!/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: it.geosolutions.imageio.gdalframework.GDALImageReaderSpi
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
at org.geoserver.platform.GeoServerContextLoaderListener.contextInitialized(GeoServerContextLoaderListener.java:22)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4210)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4709)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:583)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'storeFileFinder' defined in URL [jar:file:/opt/tomcat6/webapps/geoserver/WEB-INF/lib/restconfig-2.3.2.jar!/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: it.geosolutions.imageio.gdalframework.GDALImageReaderSpi
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:288)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1093)
at org.geoserver.rest.RESTDispatcher.addRoutes(RESTDispatcher.java:131)
at org.geoserver.rest.RESTDispatcher.createRoot(RESTDispatcher.java:231)
at org.geoserver.rest.RESTDispatcher.initApplicationContext(RESTDispatcher.java:76)
at org.springframework.context.support.ApplicationObjectSupport.initApplicationContext(ApplicationObjectSupport.java:119)
at org.springframework.web.context.support.WebApplicationObjectSupport.initApplicationContext(WebApplicationObjectSupport.java:72)
at org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:73)
at org.springframework.context.support.ApplicationContextAwareProcessor.invokeAwareInterfaces(ApplicationContextAwareProcessor.java:117)
at org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:92)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1448)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
... 36 more
Caused by: java.lang.NoClassDefFoundError: it.geosolutions.imageio.gdalframework.GDALImageReaderSpi
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:260)
at org.geotools.coverageio.gdal.rpftoc.RPFTOCFormatFactory.isAvailable(RPFTOCFormatFactory.java:57)
at org.geotools.coverage.grid.io.GridFormatFinder.getAvailableFormats(GridFormatFinder.java:91)
at org.geotools.coverage.grid.io.GridFormatFinder.getFormatArray(GridFormatFinder.java:144)
at org.geoserver.data.util.CoverageStoreUtils.<clinit>(CoverageStoreUtils.java:45)
at org.geoserver.catalog.rest.StoreFileFinder.<clinit>(StoreFileFinder.java:24)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:110)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:280)
... 56 more
Oct 27, 2014 11:47:27 AM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Oct 27, 2014 11:47:27 AM org.apache.catalina.core.StandardContext start
SEVERE: Context [/geoserver] startup failed due to previous errors

Pierre Mauduit

unread,
Oct 27, 2014, 7:37:35 AM10/27/14
to georche...@googlegroups.com
Bonjour,

> Les erreures relatives aux drivers GDAL ont disparues, mais le GeoServer ne se
> lance plus et voici ce que j'ai dans mes logs :
>
>
> 27 Oct 11:47:27 ERROR [context.ContextLoader] - Context initialization
> failed
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name 'restWrapper' defined in URL [jar:file:/opt/tomcat6/webapps/
> geoserver/WEB-INF/lib/rest-2.3.2.jar!/applicationContext.xml]:
> Initialization of bean failed; nested exception is
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name 'storeFileFinder' defined in URL [jar:file:/opt/tomcat6/
> webapps/geoserver/WEB-INF/lib/restconfig-2.3.2.jar!/
> applicationContext.xml]: Instantiation of bean failed; nested exception is
> java.lang.NoClassDefFoundError:
> it.geosolutions.imageio.gdalframework.GDALImageReaderSpi

Vous n'auriez pas supprimé un jar en trop ? Sur ma machine de dev:

~/projects/georchestra/tomcats/tomcat6-geoserver/webapps/geoserver/WEB-INF/lib % jar tf imageio-ext-gdalframework-1.1.7.jar

[...]
it/geosolutions/imageio/gdalframework/GDALImageReaderSpi.class


-- Pierre

Julien Sabatier

unread,
Oct 27, 2014, 8:23:49 AM10/27/14
to georche...@googlegroups.com
Vous n'auriez pas supprimé un jar en trop ? Sur ma machine de dev: 
~/projects/georchestra/tomcats/tomcat6-geoserver/webapps/geoserver/WEB-INF/lib % jar tf imageio-ext-gdalframework-1.1.7.jar 
[...] 
it/geosolutions/imageio/gdalframework/GDALImageReaderSpi.class 

Non ce jar est bien présent : 

root@geoserver:/usr/lib64/jvm/jdk/bin# ./jar tf /opt/tomcat6/webapps/geoserver/WEB-INF/lib/imageio-ext-gdalframework-1.1.7.jar
META-INF/
META-INF/MANIFEST.MF
it/
it/geosolutions/
it/geosolutions/imageio/
it/geosolutions/imageio/gdalframework/
it/geosolutions/imageio/gdalframework/GDALCommonIIOImageMetadata.class
it/geosolutions/imageio/gdalframework/GDALCreateOption.class
it/geosolutions/imageio/gdalframework/GDALCreateOptionsHandler.class
it/geosolutions/imageio/gdalframework/GDALImageReader.class
it/geosolutions/imageio/gdalframework/GDALImageReaderSpi.class
it/geosolutions/imageio/gdalframework/GDALImageWriteParam.class
it/geosolutions/imageio/gdalframework/GDALImageWriter$1.class
it/geosolutions/imageio/gdalframework/GDALImageWriter$ThreadLocalMemoryDriver.class
it/geosolutions/imageio/gdalframework/GDALImageWriter.class
it/geosolutions/imageio/gdalframework/GDALImageWriterSpi.class
it/geosolutions/imageio/gdalframework/GDALUtilities$1.class
it/geosolutions/imageio/gdalframework/GDALUtilities$DriverCreateCapabilities.class
it/geosolutions/imageio/gdalframework/GDALUtilities$GDALMetadataDomain.class
it/geosolutions/imageio/gdalframework/GDALUtilities$MetadataChoice.class
it/geosolutions/imageio/gdalframework/GDALUtilities.class
it/geosolutions/imageio/gdalframework/GDALWritableCommonIIOImageMetadata.class
META-INF/maven/
META-INF/maven/it.geosolutions.imageio-ext/
META-INF/maven/it.geosolutions.imageio-ext/imageio-ext-gdalframework/
META-INF/maven/it.geosolutions.imageio-ext/imageio-ext-gdalframework/pom.xml
META-INF/maven/it.geosolutions.imageio-ext/imageio-ext-gdalframework/pom.properties

Pierre Mauduit

unread,
Oct 27, 2014, 8:58:55 AM10/27/14
to georche...@googlegroups.com
Julien Sabatier a écrit :
> Vous n'auriez pas supprimé un jar en trop ? Sur ma machine de dev:
> ~/projects/georchestra/tomcats/tomcat6-geoserver/webapps/geoserver/WEB-INF/
> lib % jar tf imageio-ext-gdalframework-1.1.7.jar
> [...]
> it/geosolutions/imageio/gdalframework/GDALImageReaderSpi.class
>
>
> Non ce jar est bien présent :
> it/geosolutions/imageio/gdalframework/GDALImageReaderSpi.class

J'avoue que je commence un peu à être à court d'idées: Une version de java trop
ancienne peut-être ? Quoique vu ce que j'ai de mon coté, il y a quand même peu
de risques que cela soit lié:

% unzip imageio-ext-gdalframework-1.1.7.jar it/geosolutions/imageio/gdalframework/GDALImageReaderSpi.class
Archive: imageio-ext-gdalframework-1.1.7.jar
inflating: it/geosolutions/imageio/gdalframework/GDALImageReaderSpi.class

% file it/geosolutions/imageio/gdalframework/GDALImageReaderSpi.class
it/geosolutions/imageio/gdalframework/GDALImageReaderSpi.class: compiled Java class data, version 49.0 (Java 1.5)

Éventuellement une trace dans le catalina.out / localhost-[date].log qui
expliquerait pourquoi la classe est rejetée au chargement ?


-- Pierre

Julien Sabatier

unread,
Oct 27, 2014, 9:39:33 AM10/27/14
to georche...@googlegroups.com
J'ai dans le localhost-*.log : 

Oct 27, 2014 2:32:03 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.geoserver.GeoserverInitStartupListener
java.util.ServiceConfigurationError: javax.imageio.spi.ImageReaderSpi: Provider it.geosolutions.imageio.plugins.arcbinarygrid.ArcBinaryGridImageReaderSpi could not be instantiated
at java.util.ServiceLoader.fail(ServiceLoader.java:232)
at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
at javax.imageio.spi.IIORegistry.registerApplicationClasspathSpis(IIORegistry.java:210)
at javax.imageio.ImageIO.scanForPlugins(ImageIO.java:110)
at org.geoserver.GeoserverInitStartupListener.contextInitialized(GeoserverInitStartupListener.java:124)

at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4210)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4709)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:583)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.NoClassDefFoundError: org/gdal/gdal/gdal
at it.geosolutions.imageio.gdalframework.GDALUtilities.loadGDAL(GDALUtilities.java:624)
at it.geosolutions.imageio.gdalframework.GDALImageReaderSpi.<clinit>(GDALImageReaderSpi.java:56)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at java.lang.Class.newInstance(Class.java:438)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)
... 29 more
Caused by: java.lang.ClassNotFoundException: org.gdal.gdal.gdal
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
... 37 more

Sinon le log precedent provenait déjà de catalina.out

J'ai également essayé entre temps d'ajouter dans le fichier catalina.properties : 

shared.loader=/usr/share/java/*.jar 

Cependant je suis là encore confronté à une erreur : 

Native library load failed.
java.lang.UnsatisfiedLinkError: Native Library /usr/lib/jni/libgdaljni.so already loaded in another classloader
Oct 27, 2014 2:36:24 PM it.geosolutions.imageio.gdalframework.GDALUtilities loadGDAL
WARNING: Failed to load the GDAL native libs. This is not a problem unless you need to use the GDAL plugins: they won't be enabled.
java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.AllRegister()V 

Je ne comprends pas comment cette librairie peut être déjà chargée car je n'ai que mon geoserver sur ce tomcat et la seule référence au dossier contenant ce fichier se fait dans mon setenv.sh : 

export LD_LIBRARY_PATH="/usr/share/java:/usr/lib/jni:/opt/libjpeg-turbo/lib64:/opt/libjpeg-turbo/classes"

 

Pierre Mauduit

unread,
Oct 27, 2014, 9:55:24 AM10/27/14
to georche...@googlegroups.com
Julien Sabatier a écrit :
> J'ai dans le localhost-*.log :
>

>
> shared.loader=/usr/share/java/*.jar
>

Pas sur que cela soit une bonne idée: sur mes installations je me retrouve avec
beaucoup de choses dans le /usr/share/java (eclipse, maven, ..., un peu chaque
projet java packagé dans debian va y aller de son jar dans ce répertoire), les
mettre dans le shared classloader de tomcat ne me parait pas être une bonne
approche, mais cela ne semble pas être le problème que vous rencontrez ici de
toute facon.


>
> Cependant je suis là encore confronté à une erreur :
>
>
> Native library load failed.
> java.lang.UnsatisfiedLinkError: Native Library /usr/lib/jni/libgdaljni.so
> already loaded in another classloader
> Oct 27, 2014 2:36:24 PM it.geosolutions.imageio.gdalframework.GDALUtilities
> loadGDAL
> WARNING: Failed to load the GDAL native libs. This is not a problem unless
> you need to use the GDAL plugins: they won't be enabled.
> java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.AllRegister()V
>
>
> Je ne comprends pas comment cette librairie peut être déjà chargée car je n'ai
> que mon geoserver sur ce tomcat et la seule référence au dossier contenant ce
> fichier se fait dans mon setenv.sh :

À mon avis, la lib est deja chargée au niveau du shared classloader, mais vu
que ImageIO ext tente une nouvelle fois de charger la lib, cela explose à ce
moment-là (c'est typiquement ce que je reproche à l'intégration de JNI dans
GeoTools, cf les explications sur ma PR dans les échanges précédents). Le code
problématique provient d'un autre jar, cf:

https://github.com/geosolutions-it/imageio-ext/blob/master/library/gdalframework/src/main/java/it/geosolutions/imageio/gdalframework/GDALUtilities.java#L623

Si geoserver tourne dans son propre tomcat, alors peut-être copier le gdal.jar
du système dans le WEB-INF/lib de geoserver, déconfigurer le shared classloader
de façon à ce qu'il n'y ait pas de pollution entre le classloader de la webapp
et le shared classloader.

La méthode propre coté georchestra serait de forker les jars problématiques ou
d'arriver à convaincre les developpeurs upstream, mais nous n'avons pas encore
réussi ;-). Concernant mapfishapp et extractorapp, cela est plus simple de
trouver un workaround, pour geoserver cela l'est beaucoup moins au vu des
dépendances en jeu.

-- Pierre

Julien Sabatier

unread,
Oct 27, 2014, 10:24:15 AM10/27/14
to georche...@googlegroups.com
Pas sur que cela soit une bonne idée: sur mes installations je me retrouve avec beaucoup de choses dans le /usr/share/java (eclipse, maven, ..., un peu chaque projet java packagé dans debian va y aller de son jar dans ce répertoire), les mettre dans le shared classloader de tomcat ne me parait pas être une bonne approche, mais cela ne semble pas être le problème que vous rencontrez ici de toute facon.

J'avais laissé le chemin par défaut là où apt les avait installé, mais un lien symbolique pourra vite régler le problème ;)

Si geoserver tourne dans son propre tomcat, alors peut-être copier le gdal.jar du système dans le WEB-INF/lib de geoserver, déconfigurer le shared classloader de façon à ce qu'il n'y ait pas de pollution entre le classloader de la webapp et le shared classloader.

Cette solution a fonctionné, je n'ai plus d'erreurs relatives à GDAL et pleins de nouveaux formatssupportés :D

Cependant je ne trouve pas cette methode très "propre", mais bon quitte à devoir supprimer les jars gdal-*.jar et imageio-gdal-binding-*.jar à chaque deploiement ce n'est pas très genant au final :)

En revanche je n'ai toujours pas le support jpeg2000 :( 

Pourtant j'ai bien activé le profil jp2k à la compilation et installé la bibliothèque kakadu : http://docs.geoserver.org/2.5.x/en/user/extensions/jp2k.html

setenv.sh : 

[...]
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/kakadu:/opt/libjpeg-turbo/lib64:/opt/libjpeg-turbo/classes
[...]
export PATH=/opt/gdal-georchestra/bin:/opt/libjpeg-turbo/bin:/opt/kakadu:$PATH

J'ai verifié j'ai bien le fichier imageio-ext-gdalkakadujp2-1.1.7.jar dans le lib de mon geoserver, mais en revanche je n'ai aucune ligne concernant le chargement de cette librairie dans mes logs.
 

Pierre Mauduit

unread,
Oct 27, 2014, 11:18:01 AM10/27/14
to georche...@googlegroups.com

> J'ai verifié j'ai bien le fichier imageio-ext-gdalkakadujp2-1.1.7.jar dans le
> lib de mon geoserver, mais en revanche je n'ai aucune ligne concernant le
> chargement de cette librairie dans mes logs.

Je pense que c'est logique car vous utilisez la lib gdal de debian dorénavant,
et je doute que le support de ce format soit activé à la compilation
(problématiques de license ?).

gdalinfo --formats | grep JP
JPEG (rwv): JPEG JFIF
JPEG2000 (rwv): JPEG-2000 part 1 (ISO/IEC 15444-1)

d'après la doc, on devrait avoir en plus un JP2KAK, ce qui n'est pas le cas dans
la version "vanilla" de Geoserver. Vous pouvez tenter de recompiler GDAL en
prenant soin d'activer le support (+ les bindings java). J'avais mis quelques
explications ici concernant les paquets que j'avais généré sur sdi.g.o:

https://github.com/georchestra/georchestra/blob/14.06/geoserver/NATIVE_LIBS.md#building-gdal-from-sources

-- Pierre

Pierre Mauduit

unread,
Oct 27, 2014, 11:19:31 AM10/27/14
to georche...@googlegroups.com

> d'après la doc, on devrait avoir en plus un JP2KAK, ce qui n'est pas le cas dans
> la version "vanilla" de Geoserver. Vous pouvez tenter de recompiler GDAL en
> prenant soin d'activer le support (+ les bindings java). J'avais mis quelques
> explications ici concernant les paquets que j'avais généré sur sdi.g.o:

Il fallait évidemment lire "version vanilla de debian", désolé pour l'ambiguité.

-- Pierre

Julien Sabatier

unread,
Oct 27, 2014, 11:29:42 AM10/27/14
to georche...@googlegroups.com
D'accord, daprès ce que j'ai pu voir ici : http://trac.osgeo.org/gdal/wiki/BuildHints

Il me suffirait de recompiler GDAL avec --with-ecw=yes en option pour ajouter le support JPEG2000 ?

J'aurais également quitte à recompiler souhaité savoir si le support MIF/MID dont vous parlez pour votre package est difficile à ajouter ou si il suffit également de passer une option à true ou est-ce plus compliqué ?

Landry Breuil

unread,
Oct 27, 2014, 11:41:01 AM10/27/14
to georche...@googlegroups.com
On 10/27/14 16:29, Julien Sabatier wrote:
> D'accord, daprès ce que j'ai pu voir ici
> : http://trac.osgeo.org/gdal/wiki/BuildHints
>
> Il me suffirait de recompiler GDAL avec *--with-ecw=yes* en option pour
> ajouter le support JPEG2000 ?

ecw sert surtout au support des images ECW, ce n'est pas la meme chose
que JPEG2000 pur, pour lequel on utilise au choix kakadu, openjpeg2,
libecw (oui, cette derniere sait lire du ECW _et_ du JP2)...

Et la licence de la libecw est une sombre m****. Si on veut rester
'propre' en termes de licence, on s'en tient a openjpeg2, qui au moins
est libre.

Landry

Pierre Mauduit

unread,
Oct 27, 2014, 11:41:05 AM10/27/14
to georche...@googlegroups.com
Julien Sabatier a écrit :
> D'accord, daprès ce que j'ai pu voir ici : [1]http://trac.osgeo.org/gdal/wiki/
> BuildHints
>
> Il me suffirait de recompiler GDAL avec --with-ecw=yes en option pour ajouter
> le support JPEG2000 ?
>

Ce sont 2 formats différents, non ? Les deux nécessiteront probablement d'aller
chercher des SDKs binaires sur le net.

--with-kakadu=ARG Include Kakadu/JPEG2000 support
--with-ecw=ARG Include ECW support (ARG=ECW SDK Path, yes or no)

> J'aurais également quitte à recompiler souhaité savoir si le support MIF/MID
> dont vous parlez pour votre package est difficile à ajouter ou si il suffit
> également de passer une option à true ou est-ce plus compliqué ?

Non, le MIF/MID doit etre inclus de base je dirais (pas de soucis de license à
ce que je me souviens). Mon package permettait juste d'avoir avant la sortie
dans la distribution un fix que j'avais fait passer dans GDAL, qui avant cela
empêchait les extractions dans ce format.

-- Pierre

Julien Sabatier

unread,
Oct 28, 2014, 4:54:18 AM10/28/14
to georche...@googlegroups.com
D'accord, j'ai cependant constaté sur ce tuto : https://github.com/georchestra/georchestra/blob/14.06/geoserver/NATIVE_LIBS.md

Que le paquet debian comprend l'instruction --with-openjpeg=yes , celle-ci n'est-elle pas censé assurer le support du JPEG2000 ?

Pourtant il n'apparait pas dans la liste des formats raster sur mon GeoServer. Suis-je obligé d'utiliser le SDK Kakadu comme spécifié dans la doc du plugin GeoServer ?

Pierre Mauduit

unread,
Oct 28, 2014, 5:15:32 AM10/28/14
to georche...@googlegroups.com
Julien Sabatier a écrit :
> D'accord, j'ai cependant constaté sur ce tuto : https://github.com/georchestra/
> georchestra/blob/14.06/geoserver/NATIVE_LIBS.md
>
> Que le paquet debian comprend l'instruction --with-openjpeg=yes , celle-ci
> n'est-elle pas censé assurer le support du JPEG2000 ?

Cela l'assure probablement coté gdal, mais si rien n'a été fait coté java qui
exploite les bindings GDAL, alors il est possible que cela ne soit pas supporté.
cf:

http://docs.geotools.org/latest/javadocs/org/geotools/coverageio/gdal/package-use.html

Cela ne semble pas être le cas pour openjpeg, mais je ne suis pas un spécialiste
des formats d'imagerie.

>
> Pourtant il n'apparait pas dans la liste des formats raster sur mon GeoServer.
> Suis-je obligé d'utiliser le SDK Kakadu comme spécifié dans la doc du plugin
> GeoServer ?

Il semblerait donc :-/

--
Pierre
Reply all
Reply to author
Forward
0 new messages