• 解决:org.apache.tomcat.jni.Error: 70023: This function has not been implemented on this platform


    centos7.3 启动tomcat 出现错误:

    八月 08, 2017 4:58:47 下午 org.apache.catalina.core.StandardEngine startInternal
    信息: Starting Servlet Engine: Apache Tomcat/7.0.55
    八月 08, 2017 5:09:26 下午 org.apache.catalina.core.AprLifecycleListener init
    信息: Loaded APR based Apache Tomcat Native library 1.1.31 using APR version 1.4.8.
    八月 08, 2017 5:09:26 下午 org.apache.catalina.core.AprLifecycleListener init
    信息: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
    八月 08, 2017 5:09:26 下午 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
    严重: Failed to initialize the SSLEngine.
    org.apache.tomcat.jni.Error: 70023: This function has not been implemented on this platform
            at org.apache.tomcat.jni.SSL.initialize(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at org.apache.catalina.core.AprLifecycleListener.initializeSSL(AprLifecycleListener.java:270)
            at org.apache.catalina.core.AprLifecycleListener.lifecycleEvent(AprLifecycleListener.java:124)
            at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
            at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
            at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
            at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:99)
            at org.apache.catalina.startup.Catalina.load(Catalina.java:638)
            at org.apache.catalina.startup.Catalina.load(Catalina.java:663)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:280)
            at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:454)
    
    八月 08, 2017 5:09:26 下午 org.apache.coyote.AbstractProtocol init
    信息: Initializing ProtocolHandler ["http-apr-80"]
    八月 08, 2017 5:09:26 下午 org.apache.coyote.AbstractProtocol init
    信息: Initializing ProtocolHandler ["ajp-apr-8009"]
    八月 08, 2017 5:09:26 下午 org.apache.catalina.startup.Catalina load
    信息: Initialization processed in 622 ms
    八月 08, 2017 5:09:26 下午 org.apache.catalina.core.StandardService startInternal
    信息: Starting service Catalina
    八月 08, 2017 5:09:26 下午 org.apache.catalina.core.StandardEngine startInternal
    信息: Starting Servlet Engine: Apache Tomcat/7.0.55

    解决方案:

    1、网上有贴,说关闭ssl 即可:

       修改server.xml

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

    2、但如果确实需要SSL的话怎么办?得从根本上解决问题:

     a、yum install openssl-devel

     b、yum groupinstall "Development Tools"

     c、yum apr apr-util

     d、解压$TOMCAT_HOME/bin目录下tomcat-native.tar.gz 文件

     e、进入 cd tomcat-native-1.1.31-src/jni/native/目录:

       如果运行./configure,出现如下情况

    [root@root native]# ./configure
    checking build system type... x86_64-unknown-linux-gnu
    checking host system type... x86_64-unknown-linux-gnu
    checking target system type... x86_64-unknown-linux-gnu
    checking for a BSD-compatible install... /usr/bin/install -c
    checking for working mkdir -p... yes
    Tomcat Native Version: 1.1.31
    checking for chosen layout... tcnative
    checking for APR... no
    configure: error: APR could not be located. Please use the --with-apr option.

    则:

    [root@root native]# ./configure --with-apr=/usr/bin/apr-1-config
    checking build system type... x86_64-unknown-linux-gnu
    checking host system type... x86_64-unknown-linux-gnu
    checking target system type... x86_64-unknown-linux-gnu
    checking for a BSD-compatible install... /usr/bin/install -c
    checking for working mkdir -p... yes
    Tomcat Native Version: 1.1.31
    checking for chosen layout... tcnative
    checking for APR... yes
      setting CC to "gcc"
      setting CPP to "gcc -E"
    checking for JDK location (please wait)... /opt/jdk from environment
    checking Java platform... checking Java platform... 
    checking for sablevm... NONE
      adding "-I/opt/jdk/include" to TCNATIVE_PRIV_INCLUDES
    checking os_type directory...  linux
      adding "-I/opt/jdk/include/linux" to TCNATIVE_PRIV_INCLUDES
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables... 
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking for OpenSSL library... not found
      setting TCNATIVE_LIBS to ""
      setting TCNATIVE_LIBS to " /usr/lib64/libapr-1.la  -lpthread -ldl"
      setting TCNATIVE_LDFLAGS to ""
    configure: creating ./config.status
    config.status: creating tcnative.pc
    config.status: creating Makefile
    config.status: executing default commands

    f、make && make install

    g、重启tomcat

  • 相关阅读:
    C++ 用宏实现swap(a,b)
    C++ string类的实现
    博客园代码高亮Html转换小程序,Linux/Mac下可用
    C++STL
    数据结构课程设计(基于二叉排序树的身份证管理系统)
    简单模拟B1011
    简单模拟B1001
    双向链表的双向冒泡排序 c++
    IO流处理文件读取到字节数组,再从字节数组读取到文件,Java实现
    Java多人聊天室第一版
  • 原文地址:https://www.cnblogs.com/jessezeng/p/7308491.html
Copyright © 2020-2023  润新知