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

时间:2012-01-03 17:33:56

标签: eclipse tomcat apr

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

  

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

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

13 个答案:

答案 0 :(得分:101)

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

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

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

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

答案 1 :(得分:29)

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

  

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

答案 2 :(得分:24)

在RHEL Linux上只发出:

yum install tomcat-native.x86_64

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

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

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

所有操作都会比以前快得多。

答案 3 :(得分:19)

使用以下命令在Ubuntu服务器上安装本机库:

sudo apt-get install libtcnative-1

如果不起作用,则需要安装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:

答案 4 :(得分:6)

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

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 service tomcat restart

答案 5 :(得分:5)

也有这个问题。如果您执行拥有库,但仍有此错误,则可能是配置错误。您的server.xml可能缺少以下一行:

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

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

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

答案 6 :(得分:4)

在debian 8上我修复了安装libapr1-dev

apt-get install libtcnative-1 libapr1-dev

答案 7 :(得分:0)

当tomсat无法找到课程时,我遇到了同样的问题。尝试查看其他日志文件。有时在不同的日志文件中不会出现类def def错误:

  • tomcat8-标准输出
  • tomcat8-stderr的
  • 本地主机

答案 8 :(得分:0)

如果您没有Tomcat Native库,请安装:

  

sudo apt-get install libtcnative-1

如果还有旧版本升级它:

  

sudo apt-get upgrade libtcnative-1

答案 9 :(得分:0)

我遇到了这个问题,从Java 8升级到11 。添加此依赖关系后,我的应用程序启动没有问题:

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

答案 10 :(得分:0)

在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

答案 11 :(得分:0)

我的问题是在tomcat中添加一些库到eclipse类路径,我只是要 eclipse单击右键进行投影,然后从debug configuration -> classpath -> Add External JARs apache-tomcat-7.0.35\bin添加所有jar文件,这是我的问题,对我有用。
enter image description here

答案 12 :(得分:0)

对于未来的读者: 当我尝试在 Spring STS 中运行 Spring Boot 应用程序时,我自己也遇到过这个问题。这个问题最初没有重新出现。我能够在很长一段时间内毫无问题地处理我的项目,直到有一天我开始收到此特定错误。

据我所知,我没有对我的项目进行任何配置更改,也没有更改正在使用的 Java/Tomcat 版本。

关于安装 tomcat 本机库 的任何讨论/建议对我来说都没有任何意义,因为该项目之前已经运行良好。

对我有用的解决方案:

所以最后我想删除并重新导入我的项目。

我从 Spring STS 删除我的项目,重新启动 Spring STS,然后重新导入该项目。它就像一种魅力,从那时起就再也没有遇到过这个问题。

您也可以尝试删除项目中任何 IDE 生成的文件/文件夹(如果有),然后重新启动 IDE 并重新导入项目。

我仍然不时参与这个项目,目前还没有遇到这个问题。我目前的开发 IDE 是 IntelliJ。

我不确定该错误是否特定于 IDE。