什么"找不到基于APR的Apache Tomcat Native库"是什么意思?

fre*_*dev 92 eclipse tomcat apr

我在Windows上使用Eclipse中的Tomcat 7.启动Tomcat时,我收到以下信息消息:

在java.library.path中找不到基于APR的Apache Tomcat Native库,它可以在生产环境中实现最佳性能

这意味着什么,我如何提供APR库?

Gee*_*nte 107

这正是它所说的:"在java.library.path中找不到基于APR的Apache Tomcat Native库,它可以在生产环境中实现最佳性能"

引用的库捆绑到通过JNI加载的OS特定的dll(tcnative-1.dll)中.它允许tomcat使用Java Runtime中未提供的OS功能(例如sendfile,epoll,OpenSSL,系统状态等).如果没有它,Tomcat将运行得很好,但对于某些用例,使用本机库会更快.

如果你真的想要它,请下载tcnative-1.dll(或libtcnative.so用于Linux)并将其放在bin文件夹中,并在eclipse中将系统属性添加到tomcat服务器的启动配置中.

 -Djava.library.path=c:\dev\tomcat\bin
Run Code Online (Sandbox Code Playgroud)

  • 无论如何在没有添加.dll文件的情况下禁用该功能?@greyfairer (7认同)
  • @greyfairer在Mac OS下如何处理IntelliJ IDEA? (2认同)

Mat*_*ell 31

除非您正在运行生产服务器,否则不要担心此消息.这是一个用于提高性能的库(在生产系统上).从基于Apache Portable Runtime(APR)的Tomcat本机库:

Tomcat可以使用Apache Portable Runtime提供卓越的可伸缩性,性能以及与本机服务器技术的更好集成.Apache Portable Runtime是一个高度可移植的库,是Apache HTTP Server 2.x的核心.APR有许多用途,包括访问高级IO功能(如sendfile,epoll和OpenSSL),操作系统级功能(随机数生成,系统状态等)和本机进程处理(共享内存,NT管道和Unix套接字).


小智 25

在RHEL Linux上只发出:

yum install tomcat-native.x86_64
Run Code Online (Sandbox Code Playgroud)

/注意:根据您的架构,64位或32位封装可能有不同的扩展名/

就这些.之后您将在日志文件中找到下一条信息性消息:

INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
Run Code Online (Sandbox Code Playgroud)

所有操作都将比以前快得多.

  • 对于 CentOS 7,`yum install tomcat-native` 为我修复了这个问题 (5认同)
  • 至少对于CentOS 7,在默认的回购中找不到它.然而,它是在EPEL中,因此在安装yum install epel-release后,它会安装. (2认同)

Ama*_*Bah 21

在Ubuntu服务器上安装本机库:

sudo apt-get install libtcnative-1
Run Code Online (Sandbox Code Playgroud)

如果那不起作用tomcat-native需要安装

  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:

  3. 安装tomcat tomcat-native:


小智 8

我刚刚完成了这个并配置了以下内容:

Ubuntu 16.04

Tomcat 8.5.9

Apache2.4.25

APR 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'

重启tomcat

sudo服务tomcat重启


Has*_*ani 5

在debian 8上,我通过安装进行了修复libapr1-dev

apt-get install libtcnative-1 libapr1-dev
Run Code Online (Sandbox Code Playgroud)


MSa*_*ers 5

也有这个问题.如果你这样做有图书馆,但还是有这个错误,它可能是一个配置错误.您server.xml可能遗漏了以下内容:

 <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
Run Code Online (Sandbox Code Playgroud)

(或者,它可能会被注释掉).这<Listener>和其他听众一样,是顶级的孩子<Server>.

没有<Listener>线,没有尝试装入APR库,所以LD_LIBRARY_PATH-Djava.library.path=设置将被忽略.


Rya*_*awa 5

在 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.
Run Code Online (Sandbox Code Playgroud)

然后将其添加到 eclipse 的 tomcat 参数中(双击Server > Open Launch Configuration > Arguments tab > VM arguments

-Djava.library.path=/usr/local/opt/tomcat-native/lib
Run Code Online (Sandbox Code Playgroud)