「APRベースのApache Tomcatネイティブライブラリが見つかりませんでした」とはどういう意味ですか?


104

WindowsのEclipseでTomcat 7を使用しています。Tomcatを起動すると、次の情報メッセージが表示されます。

本番環境で最適なパフォーマンスを可能にするAPRベースのApache Tomcatネイティブライブラリがjava.library.pathに見つかりませんでした

これは何を意味し、どのようにしてAPRライブラリを提供できますか?

回答:


119

「APRベースのApache Tomcatネイティブライブラリが本番環境で最適なパフォーマンスを可能にするjava.library.pathに見つかりませんでした」

参照されるライブラリは、JNIを介してロードされるOS固有のdll(tcnative-1.dll)にバンドルされています。Tomcatは、Javaランタイムでは提供されていないOS機能(sendfile、epoll、OpenSSL、システムステータスなど)を使用できます。Tomcatはそれがなくても問題なく動作しますが、一部のユースケースでは、ネイティブライブラリを使用するとより高速になります。

本当に必要な場合は、tcnative-1.dll(またはlibtcnative.soLinuxの場合)をダウンロードしてbinフォルダーに配置し、EclipseでTomcatサーバーの起動構成にシステムプロパティを追加します。

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

1
+1このエラー(OPによる投稿)はEclipseでのみ発生していましたが、スタンドアロンで実行すると修正されました(もちろん、ネイティブlibを追加した後)。システムプロパティの設定に関するヒントをありがとうございます!
asgs

7
とにかく.dllファイルを追加せずに機能を無効にする方法はありますか?@greyfairer
Koray

2
@greyfairer IntelliJ IDEAはMac OSでどうですか?
航空機

1
macosxのjboss-nativeパッケージにはlibtcnativeがあります:jbossweb.jboss.org/downloads/jboss-native-2-0-10、MacOSに移植された同じものだと思いますか?
GreyFairer 2017年

1
Tomcat 8.0.47上のMacOSXでのtomcatネイティブインストールに問題がありました。オプション--prefix、-with-ssl、および-with-aprを指定して、ネイティブライブラリを正常にビルドしました。問題は、バイナリがtomcatの「lib」フォルダにコピーされ、「bin」フォルダにコピーされないことでした。それらを "bin"に移動するだけで動作する可能性があります
maddob

31

本番サーバーを実行している場合を除き、このメッセージについて心配する必要はありません。これは、パフォーマンスを向上させるために使用されるライブラリーです(実動システム上)。Apacheのポータブルランタイム(APR)Tomcatのネイティブライブラリをベース

TomcatはApache Portable Runtimeを使用して、優れたスケーラビリティ、パフォーマンス、およびネイティブサーバーテクノロジーとのより良い統合を提供できます。Apache Portable Runtimeは、Apache HTTP Server 2.xの中核となる移植性の高いライブラリです。APRには、高度なIO機能(sendfile、epoll、OpenSSLなど)、OSレベルの機能(乱数生成、システムステータスなど)、ネイティブプロセス処理(共有メモリ、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を実行した後、インストールされます。
Mike Gleason

2
CentOS 7の場合、yum install tomcat-nativeこれを修正しました
Isaac Betesh

22

Ubuntuサーバーへのネイティブライブラリのインストール:

sudo apt-get install libtcnative-1

それが機能しない場合は、Tomcatネイティブをインストールする必要があります

  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 ./configure
    • スードメイク
    • sudo make install
    • エクスポートLD_LIBRARY_PATH = '$ LD_LIBRARY_PATH:/ usr / local / apr / lib'
  3. tomcat tomcat-nativeをインストールします。


1
私はそれらすべてを試しましたが、何もうまくいきません。「構成済みプロトコル[org.apache.coyote.http11.Http11AprProtocol]には、使用できないAPR /ネイティブライブラリが必要です」が表示され続けます。「ant jar」コマンドを実行してtomcat-native-1.1.33-dev.jarを私のtomcat / libディレクトリにコピーしました。
coladict 2015

結果の.soファイルをそのディレクトリ、より具体的にはjava.library.pathにコピーする必要があります。
Demonkoryu 2015年

9

私はこれを経験し、次のように構成しました:

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

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ネイティブソースパッケージをダウンロードしてインストールする

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
Agnibha


5

この問題もありました。あなたがいる場合行うライブラリを持っているが、それでもこのエラーを持っている、それは、構成エラーの可能性があります。あなたは、server.xml次の行が欠落することができます。

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

(または、コメント化されている場合があります)。これは<Listener>、他のリスナーと同様に、トップレベルの子です<Server>

この<Listener>行がない場合、APRライブラリをロードする試みはないためLD_LIBRARY_PATH-Djava.library.path=設定は無視されます。


あなた、先生、最高です。何時間も額をキーボードに当てた後、ずっとAPR / Nativeが正しくインストールされていることがわかりました。単純なserver.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.

次に、それをEclipseの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

tomсatがクラスを見つけられなかったときも、同じ問題がありました。他のログファイルを表示してみてください。場合によっては、クラス定義が見つかりませんというエラーが異なるログファイルに表示されます

  • tomcat8-stdout
  • tomcat8-stderr
  • ローカルホスト

0

Tomcatネイティブライブラリがない場合は、次のコマンドでインストールします。

sudo apt-get install libtcnative-1

それでもまだ古いバージョンがある場合は、次のようにアップグレードしてください。

sudo apt-get upgrade libtcnative-1


0

私の問題は、TomcatからEclipseのクラスパスにライブラリを追加することでした。Eclipseをクリックしてプロジェクトを右クリックし、これからdebug configuration -> classpath -> Add External JARsすべてのjarファイルを追加するapache-tomcat-7.0.35\binと、問題が発生し、うまくいきました。
ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.