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

问题描述:

我在Windows上的Eclipse中使用Tomcat 7。当启动Tomcat,我收到以下信息消息:“找不到基于APR的Apache Tomcat Native库”是什么意思?

基于APR的Apache Tomcat本地库,允许在生产环境中实现最佳性能没有上设置java发现

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

这意味着正是它说:

图书馆称为捆绑成“基于APR的Apache Tomcat本地库,允许在生产环境中实现最佳性能没有上设置java发现”通过JNI加载的特定于操作系统的dll(tcnative-1.dll)。它允许tomcat使用未在Java运行时提供的操作系统功能(例如sendfile,epoll,OpenSSL,系统状态等)。没有它,Tomcat将运行得很好,但对于某些使用情况,本地库会更快。

如果您确实需要它,请下载tcnative-1.dll (or libtcnative.so for Linux)并将其放入bin文件夹,然后将系统属性添加到eclipse中的tomcat服务器的启动配置中。

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

+1我只是在Eclipse下得到了这个错误(由OP发布),尽管它在我独立运行时固定(当然,在添加本机lib之后)。感谢您设置系统属性的提示! – asgs 2012-04-18 06:05:00

+5

反正有没有添加.dll文件禁用功能? @greyfairer – 2014-10-12 07:09:49

+0

@greyfairer如何在Mac OS下使用IntelliJ IDEA? – aircraft 2017-03-18 07:45:41

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

的Tomcat可以使用Apache便携式运行提供卓越的可扩展性 ,性能和更好的整合与本地服务器 技术。 Apache Portable Runtime是位于Apache HTTP Server 2.x核心的高度便携式库 。 APR有许多用途,包括访问高级IO功能(如sendfile,epoll 和OpenSSL),操作系统级功能(随机数生成,系统 状态等)和本机进程处理(共享内存,NT管道和 Unix套接字)。

在RHEL Linux的只是问题:

百胜安装Tomcat的native.x86_64

/注:根据您的架构64位或32位包可能有不同的分机/

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

信息:APR功能:IPv6 [true],sendfile [true],接受过滤器[false],random [true]。

所有操作将比以前明显加快。

+2

至少对于CentOS 7来说,它在默认回购站中找不到。然而,在EPEL中,所以在yum安装epel-release之后,它会安装。 – 2016-01-15 17:16:36

安装与Ubuntu服务器上的本地库:

sudo apt-get install libtcnative-1 

如果不行的tomcat-本地需要安装

  1. 安装Oracle java7:

    • 须藤add-apt-repository ppa:webupd8team/java
    • sud Øapt-get的更新
    • 命令和apt-get安装的Oracle java7的安装程序
    • 命令和apt-get安装的Oracle java7设置默认
  2. 安装Tomcat四月:

  3. 安装Tomcat Tomcat的母语:

+0

我试过所有这些,但没有任何工作。我不断收到'配置的协议[org.apache.coyote.http11.Http11AprProtocol]需要APR /本地库不可用'。 甚至做了“ant jar”命令并将tomcat-native-1.1.33-dev.jar复制到了我的tomcat/lib目录中。 – coladict 2015-09-30 13:06:30

+0

您需要将生成的.so文件复制到该目录,或者更具体地说,复制到java.library.path。 – demonkoryu 2015-11-04 13:48:56

当tomсat找不到类时,我遇到了同样的问题。尝试查看其他日志文件。出现在不同的日志文件时有时无级高清发现错误:

  • tomcat8,标准输出
  • tomcat8-标准错误
  • 本地主机

在Debian 8我安装libapr1-dev修复:

apt-get install libtcnative-1 libapr1-dev 

如果没有Tomcat的本地库与安装:

命令和apt-get安装libtcnative-1

,如果它仍然有一个旧版本升级:

sudo易于得到升级libtcnative-1

我只是通过这个去与配置了下列文件:

Ubuntu的16.04

的Tomcat 8.5.9

Apache2.4.25

APR 1.5.2

Tomcat的天然1.2.10

爪哇8

这些步骤我在此基础上使用旧帖子:

安装包

sudo易于得到更新

命令和apt-get安装libtcnative-1

验证这些包都安装

命令和apt-get安装使

sudo易于得到安装gcc

sudo apt-get install openssl

安装包

命令和apt-get安装的libssl-dev的

安装和编译Apache APR

CD的/ opt/tomcat的/ bin中

须藤wget的http://apache.mirror.anlx.net//apr/apr-1.5.2.tar.gz

sudo的焦油 - xzvf APR-1.5.2.tar.gz

CD APR-1.5。2

须藤运行./configure

须藤使

须藤使安装

验证安装

CD的/ usr /本地/ APR/lib目录/

LS

你应该看到编译的文件为

libapr-1.la

下载并安装Tomcat本地源代码包

CD的/ opt/tomcat的/ bin中

须藤wget的https://archive.apache.org/dist/tomcat/tomcat-connectors/native/1.2.10/source/tomcat-native-1.2.10-src.tar.gz

须藤焦油-xzvf Tomcat的native- 1.2.10-src.tar.gz

cd tomcat-native-1.2.10-src/native

验证JAVA_HOME

须藤微微〜/ .bashrc中

出口JAVA_HOME =/usr/lib中/ JVM/JAVA -8-的openjdk-AMD64

源的〜/ .bashrc

须藤。 /配置--with-APR =在/ usr /本地/ APR --with-java主= $ JAVA_HOME

须藤使

须藤使安装

编辑/opt/tomcat/bin/setenv.sh文件,下面一行:

须藤微微/opt/tomcat/bin/setenv.sh

出口LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:在/ usr /本地/ APR/lib目录”

重新启动Tomcat

sudo的服务tomcat的重启

有这个问题为好。如果你有这个库,但仍然有这个错误,它可能是一个配置错误。你server.xml可能缺少以下行:

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

(或者,也可以被注释掉)。与其他听众一样,<Listener>是*<Server>的子女。

如果没有<Listener>行,则不会尝试加载APR库,因此LD_LIBRARY_PATH-Djava.library.path=设置将被忽略。