Windows上のEclipseでTomcat 7を使用しています。 Tomcatを起動すると、次の情報メッセージが表示されます。
実稼働環境で最適なパフォーマンスを可能にするAPRベースのApache TomcatネイティブライブラリがJava.library.pathに見つかりませんでした
これは何を意味し、APRライブラリをどのように提供できますか?
「生産環境で最適なパフォーマンスを実現するAPRベースのApache TomcatネイティブライブラリがJava.library.pathに見つかりませんでした」
参照されるライブラリは、JNIを介してロードされるOS固有のdll(tcnative-1.dll)にバンドルされています。 Tomcatは、Javaランタイムで提供されていないOS機能(sendfile、epoll、OpenSSL、システムステータスなど)を使用できます。 Tomcatはこれなしでも正常に動作しますが、一部のユースケースでは、ネイティブライブラリの方が高速になります。
本当に必要な場合は、 tcnative-1.dll
(またはLinuxの場合はlibtcnative.so
) をダウンロードしてbinフォルダーに入れ、EclipseでTomcatサーバーの起動構成にシステムプロパティを追加します。
-Djava.library.path=c:\dev\Tomcat\bin
運用サーバーを実行している場合を除き、このメッセージについて心配する必要はありません。これは、パフォーマンスを向上させるために使用されるライブラリです(運用システム)。 Apache Portable Runtime(APR)ベースのTomcat用ネイティブライブラリ :
Tomcatは、Apache Portable Runtimeを使用して、優れたスケーラビリティ、パフォーマンス、およびネイティブサーバーテクノロジーとのより良い統合を提供できます。 Apache Portable Runtimeは、Apache HTTPサーバー2.xの中心にある移植性の高いライブラリです。 APRには、高度なIO機能(sendfile、epoll、OpenSSLなど)、OSレベルの機能(乱数生成、システムステータスなど)、およびネイティブプロセス処理(共有メモリ、NTパイプとUnixソケット)。
RHEL Linuxでは、次を発行するだけです。
yum install Tomcat-native.x86_64
/注:アーキテクチャに応じて、64ビットまたは32ビットパッケージの拡張子は異なる場合があります/
以上です。その後、ログファイルに次の情報メッセージが表示されます。
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
すべての操作は以前よりも著しく高速になります。
以下を使用して、Ubuntuサーバーにネイティブライブラリをインストールします。
Sudo apt-get install libtcnative-1
それでも動作しない場合は、Tomcatネイティブをインストールする必要があります
Oracle Java7をインストールします。
Tomcat aprをインストールします。
Tomcat tomcat-nativeをインストールします。
私はこれを試し、次のように構成しました:
Ubuntu 16.04
Tomcat 8.5.9
Apache2.4.25
APR 1.5.2
Tomcatネイティブ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
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
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
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
Sudo pico /opt/Tomcat/bin/setenv.sh
export LD_LIBRARY_PATH='$LD_LIBRARY_PATH:/usr/local/apr/lib'
Sudo service Tomcat restart
この問題もありました。 doライブラリを持っているが、まだこのエラーがある場合は、構成エラーである可能性があります。 server.xml
に次の行がない場合があります。
<Listener className="org.Apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
(または、コメント化されている場合があります)。この<Listener>
は、他のリスナーと同様に、トップレベルの<Server>
の子です。
<Listener>
行がないと、APRライブラリーをロードする試みがないため、LD_LIBRARY_PATH
および-Djava.library.path=
の設定は無視されます。
debian 8では、libapr1-dev
をインストールすることで修正します。
apt-get install libtcnative-1 libapr1-dev
Tomcatネイティブライブラリをインストールしていない場合は、次を使用してインストールします。
Sudo apt-get install libtcnative-1
そして、それがまだある場合、古いバージョンはそれをアップグレードします:
Sudo apt-get upgrade libtcnative-1
この問題が発生しましたJava 8から11へのアップグレード。この依存関係を追加した後、私のアプリは問題なく起動しました:
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.25.0-GA</version>
</dependency>
Tomсatがクラスを見つけられなかったとき、私は同じ問題を抱えていました。他のログファイルを表示してみてください。異なるログファイルにNo class def foundエラーが表示される場合があります。