Что означает «Не найдена нативная библиотека Apache Tomcat на основе APR»? - PullRequest
87 голосов
/ 03 января 2012

Я использую Tomcat 7 в Eclipse на Windows. При запуске Tomcat я получаю следующее информационное сообщение:

В java.library.path не найдена библиотека Apache Tomcat, основанная на APR, которая обеспечивает оптимальную производительность в производственных средах

Что это значит и как я могу предоставить библиотеку APR?

Ответы [ 10 ]

103 голосов
/ 03 января 2012

Это означает именно то, что написано: «Библиотека jpache Tomcat Native на основе APR, обеспечивающая оптимальную производительность в производственных средах, не найдена в java.library.path»

Указанная библиотека входит в специфическую для ОС dll (tcnative-1.dll), загружаемую через JNI. Это позволяет tomcat использовать функциональные возможности ОС, не предоставляемые в Java Runtime (такие как sendfile, epoll, OpenSSL, состояние системы и т. Д.). Tomcat прекрасно работает без него, но в некоторых случаях он будет быстрее с нативными библиотеками.

Если вы действительно этого хотите, скачайте tcnative-1.dll (или libtcnative.so для Linux) , поместите его в папку bin и добавьте системное свойство в конфигурацию запуска сервера tomcat в затмение.

 -Djava.library.path=c:\dev\tomcat\bin
29 голосов
/ 03 января 2012

Если вы не используете рабочий сервер, не беспокойтесь об этом сообщении.Это библиотека, которая используется для повышения производительности (в производственных системах).Из Собственная библиотека Apache Portable Runtime (APR) для Tomcat :

Tomcat может использовать Apache Portable Runtime для обеспечения превосходной масштабируемости, производительности и лучшей интеграции с нативными серверными технологиями.Apache Portable Runtime - это очень переносимая библиотека, которая лежит в основе Apache HTTP Server 2.x.APR имеет множество применений, включая доступ к расширенным функциональным возможностям ввода-вывода (таким как sendfile, epoll и OpenSSL), функциональность на уровне ОС (генерация случайных чисел, состояние системы и т. Д.) И обработка собственных процессов (разделяемая память, каналы NT и сокеты Unix).

24 голосов
/ 15 ноября 2013

В RHEL Linux просто введите:

yum install tomcat-native.x86_64

/ Примечание: в зависимости от вашей архитектуры 64-битный или 32-битный пакет может иметь различное расширение /

Вот и все.После этого Вы найдете в файле журнала следующее информационное сообщение:

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

Все операции будут заметно быстрее, чем раньше.

20 голосов
/ 16 декабря 2013

Установка собственной библиотеки на сервере Ubuntu с помощью:

sudo apt-get install libtcnative-1

Если это не работает, необходимо установить tomcat-native

  1. Установка 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. Установить tomcat apr:

  3. Установить tomcat-tomcat-native:

6 голосов
/ 22 декабря 2016

Я просто прошел через это и настроил следующее:

Ubuntu 16.04

Tomcat 8.5.9

Apache2.4.25

апрель 1.5.2

Tomcat-native 1.2.10

Java 8

Вот шаги, которые я использовал, основываясь на старых сообщениях здесь:

Установить пакет

sudo apt-get update
sudo apt-get install libtcnative-1

Убедитесь, что эти пакеты установлены

sudo apt-get install make 
sudo apt-get install gcc
sudo apt-get install openssl

Установить пакет

sudo apt-get install libssl-dev

Установить и скомпилировать 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 make
sudo make install

проверить установку

cd /usr/local/apr/lib/
ls 

вы должны увидеть скомпилированный файл как

libapr-1.la

Загрузите и установите исходный пакет Tomcat Native

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

проверить 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 make
sudo make install

Отредактируйте файл /opt/tomcat/bin/setenv.sh с помощью следующей строки:

sudo pico /opt/tomcat/bin/setenv.sh
export LD_LIBRARY_PATH='$LD_LIBRARY_PATH:/usr/local/apr/lib'

перезагрузить кота

sudo service tomcat restart

5 голосов
/ 07 февраля 2017

Была и эта проблема. Если у вас do есть библиотеки, но все еще есть эта ошибка, это может быть ошибкой конфигурации. В вашем server.xml может отсутствовать следующая строка:

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

(В качестве альтернативы это может быть закомментировано). Этот <Listener>, как и другие слушатели, является потомком верхнего уровня <Server>.

Без строки <Listener> нет попыток загрузить библиотеку APR, поэтому настройки LD_LIBRARY_PATH и -Djava.library.path= игнорируются.

4 голосов
/ 17 сентября 2016

на Debian 8 Я исправляю это с установкой libapr1-dev:

apt-get install libtcnative-1 libapr1-dev
0 голосов
/ 03 июня 2019

У меня была эта проблема обновление с Java 8 до 11 .После добавления этой зависимости мое приложение запустилось без проблем:

<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.25.0-GA</version>
</dependency>
0 голосов
/ 22 декабря 2016

Если у вас нет библиотеки Tomcat Native, установите ее с помощью:

sudo apt-get install libtcnative-1

и, если она все еще там, старая версияобновите его:

sudo apt-get upgrade libtcnative-1

0 голосов
/ 12 июня 2015

У меня была такая же проблема, когда tomсat не мог найти класс.Попробуйте просмотреть другие файлы журнала.Иногда в разных файлах журнала появляется сообщение об отсутствии определения класса:

  • tomcat8-stdout
  • tomcat8-stderr
  • localhost
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...