当前位置: 首页 > 知识库问答 >
问题:

Tomcat ans APR库:需要不可用的APR/本机库

万修为
2023-03-14

服务器xml

<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
           connectionTimeout="4000"
           redirectPort="8443" />

Tomcat日志

Oct 12, 2016 3:11:41 PM org.apache.catalina.core.AprLifecycleListener init
SEVERE: An incompatible version 1.1.27 of the APR based Apache Tomcat Native library is installed, while Tomcat requires version 1.1.32
Oct 12, 2016 3:11:41 PM org.apache.catalina.core.StandardService initInternal
SEVERE: Failed to initialize connector [Connector[HTTP/1.1-8080]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8080]]
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
    at org.apache.catalina.core.StandardService.initInternal(StandardService.java:560)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:838)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:642)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:667)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:253)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)
Caused by: org.apache.catalina.LifecycleException: The configured protocol [org.apache.coyote.http11.Http11AprProtocol] requires the APR/native library which is not available
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:972)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    ... 12 more

已安装小包

四月一日、三日、九日至五日。el6_2。x86_64

tomcat-7.0.70-2。el6。诺奇

openssl-1.0.1e-48。el6_8.3。x86_64

tomcat-native-1.1.34-1。el6。x86_64

java-1.8.0-openjdk-1.8.0.101-3。b13。el6_8。x86_64

OS:CentOS

如何修复此错误?

共有2个答案

呼延沈义
2023-03-14

在这种情况下,APR库可能缺少tc本机ssl连接器的库,修复如下:

        . yum install apr-devel openssl-devel
        . download into $CATALINA_HOME/conf/tomcatnative and unpack the file tomcat-native-1.2.23-src.tar.gz
        . goto /native and run a command, this is the syntax
            ./configure --with-apr=$HOME/APR \
                        --with-java-home=$JAVA_HOME \
                        --with-ssl=$HOME/OPENSSL \
                        --prefix=$CATALINA_HOME

            And this is the real command
            ./configure --with-apr=/usr/bin/apr-1-config --with-java-home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64 --with-ssl=/usr/bin --prefix=/opt/tomcat

        . then run 'make && make install'
            (should have 'done' in the result without errors)
            (generated libs of tcnative are found under $CATALINA_HOME/lib)

        . under server.xml make sure below line exists
            <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

        . Edit $CATALINA_HOME/bin/setenv.sh (creating the file if necessary) and add the path to the tc-native libraries to LD_LIBRARY_PATH
            'LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib'
            'export LD_LIBRARY_PATH'

    - now start tomcat and test, the following should be seen in logs/catalina.out 
        09-Apr-2020 12:16:07.075 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library [1.2.23] using APR version [1.4.8].
        09-Apr-2020 12:16:07.075 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
        09-Apr-2020 12:16:07.075 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
        09-Apr-2020 12:16:07.089 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.0.2k-fips  26 Jan 2017]
        09-Apr-2020 12:16:11.235 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
        09-Apr-2020 12:16:11.702 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["https-openssl-apr-8443"]

        . then test https://ip:8443/tx, should be accessible
聂昱
2023-03-14

尝试升级您的库。将此代码运行到终端:

sudo apt获得升级libtcnative-1

它应该能解决问题。

 类似资料:
  • 我是刚开始的服务器开发,已经从Lars Vogel的easy tutorial开始了。使用Eclipse WTP开发Servlet和JSP。 已安装Eclipse Java EE Kepler; 在Ubuntu 12.04上安装了tomcat 7-显示正确的tomcat页面; 在Eclipse中设置tomcat运行时环境; 将tomcat服务器添加到Eclipse; 创建; 创建了servlet;

  • 每次基于Subversion的PHP项目加载时,我都会得到以下消息... 显然,该OS是Mac OSX的美洲狮。我也遵循了链接内的说明,它仍然在完全随机的时间出现。然而,颠覆行动似乎很管用。

  • 每次基于Subversion的PHP项目加载时,我都会收到以下消息... 很明显,操作系统是Mac OSX的山狮。我也遵循了链接内的指示,它仍然在完全随机的时间出现。然而,颠覆行动似乎运作良好。

  • 问题内容: 我陷入了本机项目中的一个问题。我试图做一个通用的需求文件,在其中导出所有模块。之后,我只需要我的“ require.js”文件,以避免在每个文件中都这样调用require(’../../ ModuleName’)。 我有4个文件: require.js: 在index.ios.js中(他的Home和MyView模块正确获取了importet) Home.js(模块MyView没有获得重

  • 问题内容: 我正在使用Eclipse for Java Develepers(在Windows 7上运行的Juno x64)。 我有一个项目正在尝试不再需要的jar(args4j),因此删除了依赖项。在某个时候,我的PC意外断电,从那以后,我重新启动了Eclipse。 我的项目现在有一个错误。在删除依赖项而没有任何问题之后,我在该项目上工作了一段时间。 在“项目属性”>“ Java构建路径”下,任

  • 问题内容: 我正在Windows的Eclipse中使用Tomcat 7。启动Tomcat时,我收到以下信息消息: 在java.library.path中找不到基于APR的Apache Tomcat本机库,该库可在生产环境中实现最佳性能。 这是什么意思,我如何提供APR库? 问题答案: 它的意思完全是它所说的:“在java.library.path中找不到在生产环境中实现最佳性能的基于APR的Apa