"APR tabanlı Apache Tomcat Native kitaplığı bulunamadı" ne anlama geliyor?


107

Windows'ta Eclipse'de Tomcat 7 kullanıyorum. Tomcat'i başlatırken aşağıdaki bilgi mesajını alıyorum:

Üretim ortamlarında en iyi performansı sağlayan APR tabanlı Apache Tomcat Native kitaplığı java.library.path adresinde bulunamadı

Bu ne anlama geliyor ve APR kitaplığını nasıl sağlayabilirim?

Yanıtlar:


119

Tam olarak söylediği anlamına gelir: "Üretim ortamlarında en iyi performansı sağlayan APR tabanlı Apache Tomcat Native kitaplığı java.library.path üzerinde bulunamadı"

Başvurulan kitaplık, JNI aracılığıyla yüklenen işletim sistemine özgü bir dll (tcnative-1.dll) içinde paketlenmiştir. Tomcat'in Java Runtime'da sağlanmayan işletim sistemi işlevlerini (dosya gönderme, epoll, OpenSSL, sistem durumu vb.) Kullanmasına izin verir. Tomcat onsuz gayet iyi çalışacak, ancak bazı kullanım durumları için yerel kitaplıklarla daha hızlı olacak.

Gerçekten istiyorsanız, tcnative-1.dll(veya libtcnative.soLinux için) indirin ve bin klasörüne koyun ve tutulmada tomcat sunucusunun başlatma yapılandırmasına bir sistem özelliği ekleyin.

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

1
+1 Bu hatayı (OP tarafından yayınlanmıştır) sadece Eclipse altında alıyordum, tek başına çalıştırdığımda düzeltilmiş olmasına rağmen (tabii ki yerel kütüphaneyi ekledikten sonra.) Sistem özelliğini ayarlamayla ilgili ipucu için teşekkürler!
asgs

7
.Dll dosyasını eklemeden özelliği devre dışı bırakmanın bir yolu var mı? @greyfairer
Koray Tugay

2
@greyfairer Mac OS altında IntelliJ IDEA'ya ne dersiniz?
uçak

1
Macosx için jboss-native paketinde libtcnative var : jbossweb.jboss.org/downloads/jboss-native-2-0-10 , sanırım MacOS'a taşınan aynı şey mi?
GreyFairer

1
Tomcat 8.0.47'de MacOSX'te tomcat-native yüklemeyle ilgili bir sorun yaşadık. Yerel kitaplıkları --prefix, --with-ssl ve -with-apr seçeneklerini belirleyerek başarıyla oluşturduk. Sorun, ikili dosyaların "bin" klasörüne değil tomcat'in "lib" klasörüne kopyalanmasıydı. Onları "çöp kutusuna"
götürün

31

Bir üretim sunucusu çalıştırmıyorsanız, bu mesaj için endişelenmeyin. Bu, performansı artırmak için kullanılan bir kitaplıktır (üretim sistemlerinde). Gönderen Apache Taşınabilir Runtime (APR) Tomcat için yerel kütüphane tabanlı :

Tomcat, üstün ölçeklenebilirlik, performans ve yerel sunucu teknolojileriyle daha iyi entegrasyon sağlamak için Apache Portable Runtime'ı kullanabilir. Apache Portable Runtime, Apache HTTP Sunucusu 2.x'in kalbinde yer alan oldukça taşınabilir bir kitaplıktır. APR, gelişmiş IO işlevselliğine (dosya gönderme, epoll ve OpenSSL gibi), işletim sistemi düzeyinde işlevsellik (rastgele sayı oluşturma, sistem durumu vb.) Ve yerel işlem işleme (paylaşılan bellek, NT boruları ve Unix soketleri) gibi birçok kullanıma sahiptir.


29

RHEL Linux'ta sadece şunu yayınlayın:

yum install tomcat-native.x86_64

/ Not: Mimarinize bağlı olarak 64bit veya 32bit paket farklı uzantılara sahip olabilir /

Hepsi bu. Bundan sonra günlük dosyasında bir sonraki bilgi mesajını bulacaksınız:

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

Tüm işlemler öncekinden fark edilir derecede daha hızlı olacak.


2
En azından CentOS 7 için varsayılan depolarda bulunamadı. EPEL içindeydi, bu yüzden yum install epel-release'ı yaptıktan sonra yükler.
Mike Gleason

2
CentOS 7 için, yum install tomcat-nativebu benim için düzeltildi
Isaac Betesh

22

Yerel kitaplığı aşağıdakilerle Ubuntu sunucusuna kurun:

sudo apt-get install libtcnative-1

Bu işe yaramazsa tomcat-native'in yüklenmesi gerekir

  1. Oracle java7'yi yükleyin:

    • sudo eklenti-apt-deposu ppa: webupd8team / java
    • sudo apt-get güncellemesi
    • sudo apt-get install oracle-java7-yükleyici
    • sudo apt-get install oracle-java7-set-default
  2. Tomcat apr'yi yükleyin:

  3. Tomcat tomcat-native yükleyin:


1
Hepsini denedim ama hiçbir şey işe yaramıyor. "Yapılandırılmış protokol [org.apache.coyote.http11.Http11AprProtocol], mevcut olmayan APR / yerel kitaplığı gerektiriyor" mesajı almaya devam ediyorum. Hatta "ant jar" komutunu bile yaptım ve tomcat-native-1.1.33-dev.jar dosyasını tomcat / lib dizinime kopyaladım.
2015

Elde edilen .so dosyasını bu dizine veya daha spesifik olarak java.library.path'e kopyalamanız gerekir.
demonkoryu

10

Bunun üzerinden geçtim ve aşağıdakilerle yapılandırdım:

Ubuntu 16.04

Tomcat 8.5.9

Apache2.4.25

Nisan 1.5.2

Tomcat-yerli 1.2.10

Java 8

Bunlar, buradaki eski gönderilere dayanarak kullandığım adımlar:

Kurulum paketi

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

Bu paketlerin kurulu olduğunu doğrulayın

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

Kurulum paketi

sudo apt-get install libssl-dev

Apache APR'yi kurun ve derleyin

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

kurulumu doğrula

cd /usr/local/apr/lib/
ls 

derlenen dosyayı şu şekilde görmelisiniz

libapr-1.la

Tomcat Native kaynak paketini indirin ve yükleyin

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'u doğrula

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 dosyasını aşağıdaki satırla düzenleyin:

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

tomcat'i yeniden başlat

sudo service tomcat restart


R_X86_64_32'ye karşı bu hatayı alıyorum.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
Agnibha

6

debian 8'de kurulumla düzeltirim libapr1-dev:

apt-get install libtcnative-1 libapr1-dev

5

Bu sorunu da yaşadım. Eğer varsa yapmak kütüphaneleri var ama yine de bu hata var, bu bir yapılandırma hatası olabilir. Sizin server.xmlaşağıdaki satırı eksik olabilir:

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

(Alternatif olarak, yorum yapılabilir). Bu <Listener>, diğer dinleyiciler gibi en üst seviyenin bir çocuğudur <Server>.

<Listener>Satır olmadan APR kitaplığını yükleme girişimi olmaz LD_LIBRARY_PATHve -Djava.library.path=ayarlar yok sayılır.


Siz bayım, en iyisisiniz. Klavyeye alnı uyguladıktan saatler sonra, APR / Native'in her zaman doğru şekilde kurulduğu ortaya çıktı. Basit bir server.xml sorunudur!
ölümsüz squish

3

Mac OS X'te:

$ 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.

Ardından onu tutulmanın tomcat bağımsız değişkenlerine ekleyin ( Sunucu> Başlatma Yapılandırmasını Aç > Bağımsız Değişkenler sekmesi> VM bağımsız değişkenlerine çift ​​tıklayın )

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

1

Java 8'den 11'e yükseltme yaparken bu sorunu yaşadım . Bu bağımlılığı ekledikten sonra uygulamam sorunsuz bir şekilde açıldı:

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

0

Tomсat sınıfı bulamayınca ben de aynı sorunu yaşadım. Diğer günlük dosyalarını görüntülemeyi deneyin. Bazen farklı günlük dosyalarında sınıf bulunamadı hatası görünmez:

  • tomcat8-stdout
  • tomcat8-stderr
  • localhost

0

Tomcat Native kitaplığınız yoksa, şununla yükleyin:

sudo apt-get install libtcnative-1

ve hala eski bir sürüm varsa, şununla yükseltin:

sudo apt-get yükseltme libtcnative-1


0

Benim sorunum, tomcat'ten eclipse sınıf yoluna bir kütüphane eklemekti, sadece projeye sağ tıklayıp debug configuration -> classpath -> Add External JARstüm jars dosyalarını ekleyeceğim ve apache-tomcat-7.0.35\binbu benim sorunumdu ve bu benim için çalıştı.
görüntü açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.