Что означает "Основанная на APR Tomcat Native библиотека не была найдена"?
Я использую Tomcat 7 в Eclipse в Windows. Когда я запускаю Tomcat, я получаю следующее информационное сообщение:
Основанная на APR Apache Tomcat Native библиотека, которая обеспечивает оптимальную производительность в производственных средах, не найдена на java.library.path
Что это значит и как я могу предоставить библиотеку APR?
Ответы
Ответ 1
Это означает именно то, что он говорит: "Основанная на APR Apache Tomcat Native библиотека, которая обеспечивает оптимальную производительность в производственных средах, не найдена на java.library.path"
Библиотека, на которую ссылается, вставляется в специфичную для ОС dll (tcnative-1.dll), загруженную через JNI. Это позволяет tomcat использовать функциональные возможности ОС, не предусмотренные в Java Runtime (такие как sendfile, epoll, OpenSSL, состояние системы и т.д.). Tomcat будет работать отлично, но в некоторых случаях он будет быстрее с родными библиотеками.
Если вы действительно этого хотите, загрузите tcnative-1.dll
(или libtcnative.so
для Linux) и поместите его в папку bin, и добавьте системное свойство в конфигурацию запуска сервера tomcat в eclipse.
-Djava.library.path=c:\dev\tomcat\bin
Ответ 2
Если вы не работаете с производственным сервером, не беспокойтесь об этом сообщении. Это библиотека, которая используется для повышения производительности (в производственных системах). Из Apache Portable Runtime (APR), основанная на Native library для Tomcat:
Tomcat может использовать Apache Portable Runtime для обеспечения превосходного масштабируемость, производительность и лучшая интеграция с собственным сервером технологии. Apache Portable Runtime - это очень портативная библиотека что лежит в основе Apache HTTP Server 2.x. APR имеет много применений, включая доступ к расширенным функциональным возможностям ввода-вывода (например, sendfile, epoll и OpenSSL), функциональность уровня ОС (генерация случайных чисел, система статус и т.д.) и собственная обработка процессов (разделяемая память, NT-каналы и Unix).
Ответ 3
На RHEL Linux просто выдайте:
yum install tomcat-native.x86_64
/Примечание: в зависимости от вашей архитектуры 64-битный или 32-битный пакет может иметь различное расширение /
Это все. После этого Вы найдете в файле журнала следующее информационное сообщение:
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
Все операции будут заметно быстрее, чем раньше.
Ответ 4
Установка собственной библиотеки на сервере Ubuntu с помощью:
sudo apt-get install libtcnative-1
Если это не работает, то tomcat-native необходимо установить
Ответ 5
Я просто прошел через это и настроил его следующим образом:
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
Ответ 6
на debian 8 Я исправляю его при установке libapr1-dev
:
apt-get install libtcnative-1 libapr1-dev
Ответ 7
Была и эта проблема. Если у вас есть библиотеки, но все еще есть эта ошибка, это может быть ошибка конфигурации. Ваш server.xml
может отсутствовать в следующей строке:
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
(В качестве альтернативы он может быть прокомментирован). Этот <Listener>
, как и другие слушатели, является дочерним элементом верхнего уровня <Server>
.
Без строки <Listener>
нет попытки загрузить библиотеку APR, поэтому параметры LD_LIBRARY_PATH
и -Djava.library.path=
игнорируются.
Ответ 8
У меня была такая же проблема, когда tomasat не смог найти класс. Попробуйте просмотреть другие файлы журналов. Иногда в разных файлах журнала не обнаруживается ошибка определения класса def:
- tomcat8-STDOUT
- tomcat8-STDERR
- локальный
Ответ 9
Если у вас нет библиотеки Tomcat Native, установите ее с помощью:
sudo apt-get install libtcnative-1
и если он все еще там, старая версия обновляет его с помощью:
sudo apt-get upgrade libtcnative-1
Ответ 10
У меня была эта проблема обновления с Java 8 до 11. После добавления этой зависимости мое приложение запустилось без проблем:
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.25.0-GA</version>
</dependency>
Ответ 11
В Mac OS X:
$ brew install tomcat-native
==> tomcat-native
In order for tomcat APR lifecycle listener to find this library, you'll
need to add it to java.library.path. This can be done by adding this line
to $CATALINA_HOME/bin/setenv.sh
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/opt/tomcat-native/lib"
If $CATALINA_HOME/bin/setenv.sh does not exist, create it and make it executable.
Затем добавьте его в аргументы eclipse tomcat (дважды щелкните Сервер> Открыть конфигурацию запуска > вкладка Аргументы> Аргументы виртуальной машины)
-Djava.library.path=/usr/local/opt/tomcat-native/lib