“没有找到基于 APR 的 ApacheTomcat 原生库”是什么意思?

我在 Windows 的 Eclipse 中使用 Tomcat 7:

基于 APR 的 Apache Tomcat NativeLibrary 允许在生产环境中实现最佳性能,但是在 java.library. path 中没有找到这个库

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

342171 次浏览

除非您运行的是生产服务器,否则不要担心这条消息。这是一个用于提高性能(在生产系统上)的库。来自 基于 Apache可移植运行时的 Tomcat 原生库:

雄猫可以利用 Apache可移植运行时 可伸缩性、性能以及与本机服务器的更好集成 Apache可移植运行时是一个高度便携的图书馆 这是2. x Apache HTTP Server 的核心, 包括访问高级 IO 功能(如 sendfile、 epoll 和 OpenSSL) ,操作系统级别的功能(随机数生成,系统 状态等)和本机进程处理(共享内存、 NT 管道和 Unix 套接字)。

它的意思正如它所说的: “基于 APR 的 Apache Tomcat 原生库允许在生产环境中获得最佳性能,但是在 java.library. path 中没有找到这个库。”

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

如果您确实需要它,请下载 ABC0(或者用于 Linux 的 libtcnative.so)并将其放在 bin 文件夹中,然后在 eclipse 中向 tomcat 服务器的启动配置添加一个系统属性。

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

关于 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-本机需要安装

  1. Install Oracle java7:

    • Sudo add-apt-itory ppa: webupd8team/java
    • Sudo apt-get 更新
    • Sudo apt-get install oracle-java7-installer
    • Sudo apt-get install oracle-java7-set-default
  2. 安装 tomcat apr:

  3. 安装 tomcat tomcat 本地:

当汤姆找不到那个班时,我也遇到了同样的问题。尝试查看其他日志文件。有时在不同的日志文件中没有类定义发现错误:

  • Tomcat8-stdout
  • Tomcat8-stderr
  • 本地主机

在 debian 8上,我通过安装 libapr1-dev来修复它:

apt-get install libtcnative-1 libapr1-dev

If you don't have Tomcat Native library install it with:

Sudo apt-get install libtcnate-1

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

Sudo apt-get update libtc-1

我只是浏览了一下,然后将其配置为以下内容:

Ubuntu 16.04

雄猫8.5.9

Apache2.4.25

APR 1.5.2

Tomcat-土生土长的1.2.10

爪哇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

Install and compile 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

下载并安装 TomcatNativesource 包

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'

重新启动公猫

sudo service tomcat restart

也有这个问题。如果 有这些库,但仍然存在这个错误,那么它可能是一个配置错误。您的 server.xml可能缺少以下几行:

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

这个 <Listener>和其他侦听器一样,是顶级 <Server>的子级。

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

我有这个问题 upgrading from Java 8 to 11。添加这个依赖项后,我的应用程序启动没有问题:

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

在 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 参数(双击 Server > 打开启动配置 > Arguments tab > VM 参数)

-Djava.library.path=/usr/local/opt/tomcat-native/lib

我的问题是在添加一些库,从 tomcat 到 Eclipse 类路径我只是要去 eclipse click right to project and going to debug configuration -> classpath -> Add External JARs add all jars files from apache-tomcat-7.0.35\bin this was my problem and it's worked for me .
enter image description here

对于未来的读者: 在尝试在 春季化粪池系统中运行 弹簧靴应用程序时,我自己也遇到过这个问题。这个问题最初没有重新出现。我能够在我的项目上没有任何问题工作了相当长的一段时间,直到一个美好的一天,我开始得到这个特殊的错误。

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

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

对我有效的解决方案是:

So lastly I though of trying to delete and reimport my project.

删除我的项目从春季 STS,restarted的春季 STS,然后 重新进口的项目。它像魔法一样工作,从此再也没有面对过这个问题。

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

I still happen to work on this project from time to time and haven't faced the issue as of now. My current development IDE is IntelliJ.

我不确定这个错误是否是特定于 IDE 的。