web-dev-qa-db-fra.com

Comment ajouter une bibliothèque native dans Tomcat?

Je veux ajouter la bibliothèque gdal dans Tomcat. J'ai lu bibliothèques natives non trouvées dans Tomcat mais je ne comprends pas où dans startup.bat Je devrais ajouter -Djava.library.path.

Les erreurs:

exception

javax.servlet.ServletException: Servlet execution threw an exception
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.Java:72)
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.Java:70)

root cause

Java.lang.UnsatisfiedLinkError: org.gdal.ogr.ogrJNI.GetDriverCount()I
org.gdal.ogr.ogrJNI.GetDriverCount(Native Method)
org.gdal.ogr.ogr.GetDriverCount(ogr.Java:98)
org.geotools.data.ogr.OGRDataStore.<clinit>(OGRDataStore.Java:169)
test.Read.getKadnum(Read.Java:56)
test.Zipper.mifUnzip(Zipper.Java:139)
test.Zipper.Unzip(Zipper.Java:60)
test.uploadfile.doPost(uploadfile.Java:105)
javax.servlet.http.HttpServlet.service(HttpServlet.Java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.Java:722)
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.Java:72)
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.Java:70)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.23 logs.

J'ai téléchargé gdal 64bit à partir de: http://vbkto.dyndns.org:1280/sdk/PackageList.aspx?file=release-1600-x64-gdal-1-9-mapserver-6-2.Zip

14
Kliver Max

Il doit être configuré dans catalina.bat au lieu de startup.bat.

set Java_OPTS="-Djava.library.path=/usr/Tomcat/shared/lib"

peut être mis après

:noJuliManager
set Java_OPTS=%Java_OPTS% %LOGGING_MANAGER%
11
coderLMN

La réponse acceptée (en février 2016) est tout simplement fausse.

  • Vous êtes jamais censé éditer catalina.bat/catalina.sh. Non! (Le seul fichier dans Tomcat's bin/ dir que vous êtes censé toucher est setenv.bat).

  • La bonne variable de configuration est CATALINA_OPTS, ne pas Java_OPTS.

  • Si vous êtes sous Windows, vous ne voulez pas citer la valeur de la commande SET car les guillemets font partie de la valeur réelle. (contrairement à Unix/Linux)

  • Il est probable que vous souhaitiez conserver ce qui se trouve déjà dans Java.library.path.

(dans ce qui suit, je suppose que vous êtes sous Windows, changez en conséquence pour Linux/Solaris/Mac OSX).

Voici comment procéder: placez un fichier appelé setenv.bat dans le même répertoire que catalina.bat. Le fichier n'existera pas, sauf si vous l'avez créé vous-même précédemment. Créez donc le fichier. Il doit avoir le contenu suivant pour votre objectif:

set CATALINA_OPTS=%CATALINA_OPTS% -Djava.library.path=%PATH%;c:\mydlls

Sous Windows Java.library.path par défaut sera %PATH% donc une alternative à tout ce qui précède aurait été de changer votre variable d'environnement PATH.

Si vous ne voulez pas avoir de confusion sur l'endroit exact où la JVM chargera vos bibliothèques natives, omettez le %PATH%; partie de ce qui précède. Personnellement, j'omets %PATH% pour cette raison mais c'est une question de goût.

31
peterh

Selon les commentaires sur catalina.bat, je pense que le bon endroit est CATALINA_OPTS.

rem   CATALINA_OPTS   (Optional) Java runtime options used when the "start",
rem                   "run" or "debug" command is executed.
rem                   Include here and not in Java_OPTS all options, that should
rem                   only be used by Tomcat itself, not by the stop process,
rem                   the version command etc.
rem                   Examples are heap size, GC logging, JMX ports etc.
5
Francesco