Answers:
它的意思完全是它的意思:“在java.library.path中找不到在生产环境中实现最佳性能的基于APR的Apache Tomcat本机库”
所引用的库捆绑到通过JNI加载的OS特定的dll(tcnative-1.dll)中。它允许tomcat使用Java运行时中未提供的OS功能(例如sendfile,epoll,OpenSSL,系统状态等)。如果没有Tomcat,它将运行良好,但是对于某些用例,使用本机库将使其更快。
如果确实需要,请下载tcnative-1.dll
(或libtcnative.so
对于Linux)并将其放在bin文件夹中,然后在eclipse中将系统属性添加到tomcat服务器的启动配置中。
-Djava.library.path=c:\dev\tomcat\bin
除非您正在运行生产服务器,否则请不要担心此消息。这是一个用于提高性能(在生产系统上)的库。从基于Apache可移植运行时(APR)的Tomcat本机库:
Tomcat可以使用Apache Portable Runtime提供出色的可伸缩性,性能以及与本机服务器技术的更好集成。Apache Portable Runtime是一个高度可移植的库,它是Apache HTTP Server 2.x的核心。APR有许多用途,包括访问高级IO功能(例如sendfile,epoll和OpenSSL),操作系统级别的功能(生成随机数,系统状态等)和本机进程处理(共享内存,NT管道和Unix套接字)。
在RHEL Linux上,只需发出:
yum install tomcat-native.x86_64
/注意:根据您的体系结构,64位或32位程序包可能具有不同的扩展名/
就这些。之后,您将在日志文件中找到下一条参考消息:
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
所有操作将比以前明显更快。
yum install tomcat-native
为我解决此问题
使用以下命令在Ubuntu服务器上安装本机库:
sudo apt-get install libtcnative-1
如果不起作用,则需要安装tomcat-native
安装Oracle java7:
安装tomcat apr:
安装tomcat tomcat-native:
我只是经历了此过程,并使用以下命令对其进行了配置:
Ubuntu 16.04
的Tomcat 8.5.9
阿帕奇2.4.25
年利率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
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
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
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
sudo pico /opt/tomcat/bin/setenv.sh
export LD_LIBRARY_PATH='$LD_LIBRARY_PATH:/usr/local/apr/lib'
sudo service tomcat restart
.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
在debian 8上,我通过安装进行了修复libapr1-dev
:
apt-get install libtcnative-1 libapr1-dev
也有这个问题。如果您确实有这些库,但是仍然存在此错误,则可能是配置错误。您server.xml
可能缺少以下行:
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
(或者,可以将其注释掉)。<Listener>
就像其他听众一样,这是顶级的孩子<Server>
。
没有这一<Listener>
行,就不会尝试加载APR库,因此LD_LIBRARY_PATH
和-Djava.library.path=
设置将被忽略。
在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> Open Launch Configuration > Arguments选项卡> VM arguments)
-Djava.library.path=/usr/local/opt/tomcat-native/lib