Що означає "Бібліотека Apache Tomcat Native не знайдена" у квітні? "


104

Я використовую Tomcat 7 у програмі Eclipse для Windows. Запускаючи Tomcat, я отримую таке інформаційне повідомлення:

На java.library.path не знайдено бібліотеки Apache Tomcat Native, яка дозволяє досягти оптимальної продуктивності у виробничих умовах.

Що це означає і як я можу надати бібліотеку APR?

Відповіді:


119

Це означає саме те, що сказано: "На базі java.library.path не знайдено бібліотеки Apache Tomcat Native, яка дозволяє досягти оптимальної продуктивності у виробничих умовах".

Згадана бібліотека вбудовується в специфічний для ОС dll (tcnative-1.dll), завантажений через JNI. Це дозволяє tomcat використовувати функції ОС, не передбачені в режимі виконання Java (такі як sendfile, epoll, OpenSSL, статус системи тощо). Tomcat працюватиме бездоганно без нього, але для деяких випадків використання це буде швидше з рідними бібліотеками.

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

 -Djava.library.path=c:\dev\tomcat\bin

1
+1 Я отримував цю помилку (розміщував ОП) лише під Eclipse, хоча вона була виправлена, коли я запускаю її окремо (звичайно, після додавання нативного вкладиша.) Дякую за пораду щодо налаштування властивості системи!
асгс

7
Чи все-таки можна відключити функцію, не додаючи .dll файл? @greyfairer
Koray Tugay

2
@greyfairer як щодо IntelliJ IDEA під Mac OS?
літак

1
У пакеті jmass для рідного пакету для macosx є libtcnative : jbossweb.jboss.org/downloads/jboss-native-2-0-10 , я думаю, це те саме, що перенесено на MacOS?
GreyFairer

1
У нас виникла проблема із встановленням Tomcat на MacOSX на Tomcat 8.0.47. Ми створили нативні libs успішно, вказавши параметри --prefix, --with-ssl та -with-apr. Проблема полягала в тому, що двійкові файли були скопійовані в папку "lib" tomcat, а не в папку "bin". Просто перемістіть їх у "бін", і це може спрацювати
maddob

31

Якщо ви не працюєте з виробничим сервером, не хвилюйтеся з приводу цього повідомлення. Це бібліотека, яка використовується для підвищення продуктивності (на виробничих системах). З Native Бібліотеки для Tomcat на базі портативної програми виконання Apache :

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


28

На RHEL Linux просто видайте:

yum install tomcat-native.x86_64

/ Примітка: залежно від вашої архітектури 64-бітовий або 32-бітний пакет може мати різні розширення /

Це все. Після цього ви знайдете у файлі журналу наступне інформаційне повідомлення:

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

Всі операції будуть помітно швидшими, ніж раніше.


2
Принаймні, для CentOS 7 він не був знайдений у репозиціях за замовчуванням. Однак це було в EPEL, тому після того, як ви зробите yum install epel-release, він встановлюється.
Майк Глісон

2
Для CentOS 7 yum install tomcat-nativeвиправили це для мене
Ісаак Бетеш

22

Встановлення рідної бібліотеки на сервер Ubuntu за допомогою:

sudo apt-get install libtcnative-1

Якщо це не працює, потрібно встановити рідну мову

  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:

    • wget http://apache.mirror.anlx.net//apr/apr-1.5.0.tar.gz
    • tar zxvf apr-1.5.0.tar.gz
    • rm apr-1.5.0.tar.gz
    • cd apr-1.5.0
    • sudo ./конфігурувати
    • зробити судо
    • sudo make install
    • export LD_LIBRARY_PATH = '$ LD_LIBRARY_PATH: / usr / local / apr / lib'
  3. Встановити Tomcat-рідну мову:


1
Я спробував все це, але нічого не виходить. Я продовжую отримувати "Налаштований протокол [org.apache.coyote.http11.Http11AprProtocol] вимагає APR / рідної бібліотеки, яка недоступна". Навіть виконав команду "jar jar" і скопіював tomcat-native-1.1.33-dev.jar до мого каталогу tomcat / lib.
coladict

Вам потрібно скопіювати отриманий файл .so у цей каталог, а точніше, на java.library.path.
demonkoryu

9

Я щойно пройшов це і налаштував це на наступне:

Ubuntu 16.04

Томкат 8.5.9

Apache2.4.25

КВ. 1.5.2

Томатний рідний 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'

перезапустити tomcat

sudo service tomcat restart


Я маю цю помилку `переїзд R_X86_64_32 проти.rodata' can not be used when making a shared object; recompile with -fPIC /usr/local/ssl/lib/libssl.a: error adding symbols: Bad value collect2: error: ld returned 1 exit status make[1]: *** [libtcnative-1.la] Error 1
Агнібха


5

Була і ця проблема. Якщо ви робите є бібліотеки, але до сих пір ця помилка, це може бути помилка конфігурації. Ви server.xmlможете пропускати наступний рядок:

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

(Крім того, це можна прокоментувати). Це <Listener>, як і інші слухачі, дитина вищого рівня<Server> .

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


Ви, пане, найкращі. Після кількох годин застосування чола на клавіатурі виявляється, що у мене весь час APR / Native встановлений правильно. Twas проста проблема сервера.xml!
безсмертний кабачок

3

У Mac OS X:

$ brew install tomcat-native
==> tomcat-native
In order for tomcat's 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 doesn't exist, create it and make it executable.

Потім додайте його до Tomcat аргументів затемнення ( двічі клацніть Сервер> Відкрити конфігурацію запуску > вкладка Аргументи> Аргументи VM )

-Djava.library.path=/usr/local/opt/tomcat-native/lib

1

У мене було оновлено цю проблему з Java 8 до 11 . Після додавання цієї залежності мій додаток запущено без проблем:

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

0

У мене була така ж проблема, коли tomsat не міг знайти клас. Спробуйте переглянути інші файли журналів. Іноді в різних файлах журналу не з’являється помилка визначення класу def:

  • tomcat8-stdout
  • tomcat8-stderr
  • localhost

0

Якщо у вас немає бібліотеки Tomcat Native, встановіть її:

sudo apt-get install libtcnative-1

і якщо все ще є стара версія, оновіть її:

sudo apt-get upgrade libtcnative-1


0

Моя проблема полягала в тому, щоб додати трохи бібліотеки від tomcat до шляху затемнення класу, я просто збираюся затемнити клацання правою кнопкою, щоб проектувати, і я збирався debug configuration -> classpath -> Add External JARsдодати всі файли з apache-tomcat-7.0.35\binцього банку, і це було моєю проблемою.
введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.