web-dev-qa-db-fra.com

Que signifie "La bibliothèque native Apache Tomcat basée sur APR n'a pas été trouvée" signifie?

J'utilise Tomcat 7 dans Eclipse sous Windows. Lors du démarrage de Tomcat, le message d’information suivant s’affiche:

La bibliothèque native Apache Tomcat basée sur APR, qui permet d'obtenir des performances optimales dans les environnements de production, n'a pas été trouvée sur le fichier Java.library.path.

Qu'est-ce que cela signifie et comment puis-je fournir la bibliothèque APR?

75
fresh_dev

Cela signifie exactement ce qu'il dit: "La bibliothèque native Apache Tomcat basée sur APR, qui permet des performances optimales dans les environnements de production, n'a pas été trouvée sur le fichier Java.library.path"

La bibliothèque à laquelle il est fait référence est regroupée dans une dll spécifique au système d'exploitation (tcnative-1.dll) chargée via JNI. Il permet à Tomcat d’utiliser les fonctionnalités du système d’exploitation non fournies dans Java Runtime (telles que sendfile, epoll, OpenSSL, l’état du système, etc.). Tomcat fonctionnera parfaitement sans cela, mais dans certains cas d'utilisation, les bibliothèques natives seront plus rapides.

Si vous le souhaitez vraiment, téléchargez tcnative-1.dll (ou libtcnative.so pour Linux) et placez-le dans le dossier bin, puis ajoutez une propriété système à la configuration de lancement du serveur Tomcat dans Eclipse.

 -Djava.library.path=c:\dev\Tomcat\bin
94
Geert Pante

Sauf si vous utilisez un serveur de production, ne vous inquiétez pas de ce message. Cette bibliothèque est utilisée pour améliorer les performances (sur les systèmes de production). De Bibliothèque native basée sur Apache Portable Runtime (APR) pour Tomcat :

Tomcat peut utiliser Apache Portable Runtime pour fournir une qualité supérieure Évolutivité, performance et meilleure intégration avec le serveur natif les technologies. Apache Portable Runtime est une bibliothèque hautement portable c'est au cœur d'Apache HTTP Server 2.x. APR a de nombreuses utilisations, y compris l’accès aux fonctionnalités avancées IO (telles que sendfile, epoll et OpenSSL), aux fonctionnalités au niveau du système d’exploitation (génération de nombres aléatoires, système status, etc.) et à la gestion de processus natifs (mémoire partagée, canaux NT et Unix).

28
Matthew Farwell

Sous RHEL Linux, il suffit de publier:

yum install Tomcat-native.x86_64

/ Remarque: selon votre architecture, les packages 64 bits ou 32 bits peuvent avoir une extension différente /

C'est tout. Après cela, vous trouverez dans le fichier journal le message d’information suivant:

INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

Toutes les opérations seront sensiblement plus rapides qu'avant.

23
user911734

Installez la bibliothèque native sur le serveur Ubuntu avec:

Sudo apt-get install libtcnative-1

Si cela ne fonctionne pas, Tomcat-native doit être installé.

  1. Installez Oracle Java7:

    • Sudo add-apt-repository ppa: webupd8team/Java
    • Sudo apt-get update
    • Sudo apt-get install Oracle-Java7-installer
    • Sudo apt-get install Oracle-Java7-set-default
  2. Installez Tomcat apr:

  3. Installez Tomcat tomcat-native:

18
Amadu Bah

Eu ce problème aussi. Si vous do avez les bibliothèques, mais avez toujours cette erreur, il peut s'agir d'une erreur de configuration. Votre server.xml manque peut-être la ligne suivante:

 <Listener className="org.Apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

(Alternativement, il peut être commenté). Ce <Listener>, comme les autres écouteurs, est un enfant du <Server> de niveau supérieur.

Sans la ligne <Listener>, aucune tentative de chargement de la bibliothèque APR n’est tentée; les paramètres LD_LIBRARY_PATH et -Djava.library.path= sont donc ignorés.

5
MSalters

Je viens de traverser cela et le configurer avec les éléments suivants:

Ubuntu 16.04

Tomcat 8.5.9

Apache2.4.25

APR 1.5.2

Tomcat-native 1.2.10

Java 8 

Voici les étapes que j'ai suivies à partir des anciens messages ici:

Installer le paquet

Sudo apt-get update

Sudo apt-get install libtcnative-1

Vérifiez que ces paquets sont installés

Sudo apt-get install marque 

Sudo apt-get install gcc

Sudo apt-get install openssl

Installer le paquet

Sudo apt-get installer libssl-dev

Installer et compiler Apache APR

cd/opt/Tomcat/bin

Sudo wget http://Apache.mirror.anlx.net//apr/apr-1.5.2.tar.gz

Sudo tar -xzvf apr-1.5.2.tar.gz

cd apr-1.5.2

Sudo ./configure

Sudo faire

Sudo fait installer

vérifier l'installation

cd/usr/local/apr/lib /

ls 

vous devriez voir le fichier compilé comme

libapr-1.la

Téléchargez et installez le paquet source Tomcat Native Source

cd/opt/Tomcat/bin

Sudo wget https://archive.Apache.org/dist/Tomcat/tomcat-connectors/native/1.2.10/source/Tomcat-native-1.2.10-src.tar.gz

Sudo tar -xzvf Tomcat-native-1.2.10-src.tar.gz

cd Tomcat-native-1.2.10-src/native

vérifier Java_HOME

Sudo pico ~/.bashrc

export Java_HOME =/usr/lib/jvm/Java-8-openjdk-AMD64

source ~/.bashrc

Sudo ./configure --with-apr =/usr/local/apr --with-Java-home = $ Java_HOME

Sudo faire

Sudo fait installer

Editez le fichier /opt/Tomcat/bin/setenv.sh avec la ligne suivante:

Sudo pico /opt/Tomcat/bin/setenv.sh

export LD_LIBRARY_PATH = '$ LD_LIBRARY_PATH:/usr/local/apr/lib'

redémarrer Tomcat

Sudo service Tomcat redémarrer

5
Russell Rottach

sur debian 8, je résous le problème avec l’installation de libapr1-dev:

apt-get install libtcnative-1 libapr1-dev
3
Hasan Ramezani

Si vous n'avez pas de bibliothèque native Tomcat, installez-la avec:

Sudo apt-get install libtcnative-1

et s'il en reste une ancienne version, mettez-la à niveau avec:

Sudo apt-get upgrade libtcnative-1

0
Dejan

J'ai eu ce problème mise à niveau de Java 8 à 11. Après avoir ajouté cette dépendance, mon application a été lancée sans problème:

<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.25.0-GA</version>
</dependency>
0
Stephen Paul

J'ai eu le même problème quand tomсat n'a pas pu trouver la classe. Essayez d'afficher d'autres fichiers journaux. Parfois, aucune erreur de définition de classe trouvée ne s'affiche dans différents fichiers journaux:

  • Tomcat8-stdout
  • Tomcat8-stderr
  • localhost
0
Koss