![](/img/trans.png)
[英]The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path
[英]APR for optimal performance in production environments
我正在 docker 容器中安装一个 java 应用程序。 它运行良好,但我在日志中保留了这个错误:
信息 1 --- [ost-startStop-1] oacatalina.core.AprLifecycleListener :在 java.library.path: [/usr/java/packages /lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr /lib]
所以,我试图通过遵循this和this来安装这个 APR 包,并通过在我的 dockerfile 中添加这一行来安装 tomcat native:
运行 apt-get install -y libtcnative-1
但是,当添加这一行时,我在日志中收到以下消息:
错误 1 --- [ost-startStop-1] oacatalina.core.AprLifecycleListener :安装了基于 APR 的 Apache Tomcat Native 库的不兼容版本 [1.1.33],而 Tomcat 需要版本 [1.2.14]
我尝试安装:
apt-get install -y openjdk-8-jdk libapr1-dev
和
apt-get install -y openjdk-8-jdk libtcnative-1 libapr1-dev
但这些都没有奏效..我不断收到相同的消息。
我还尝试按照此处的第一个答案从源代码安装,但这也不起作用。
这是我的 dockerfile 的其余部分:
FROM ubuntu:16.04
RUN apt-get update \
&& apt-get install -y software-properties-common python-software-properties \
&& add-apt-repository ppa:mozillateam/ppa \
&& apt-get update \
&& apt-get install -y firefox firefox-esr
RUN apt-get install -y libtcnative-1 openjdk-8-jdk
任何帮助表示赞赏。 谢谢!
如果有人仍然感兴趣,这就是我所做的:
FROM adoptopenjdk/openjdk11:jdk-11.0.1.13 AS build
ADD apr-1.7.0 $HOME/apr-1.7.0
ADD tcnative $HOME/tcnative
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update -y && \
apt-get -y upgrade && \
apt-get install -y build-essential libssl-dev
WORKDIR $HOME/apr-1.7.0
RUN ./configure && make && make install
WORKDIR $HOME/tcnative
RUN ./configure --with-apr=/usr/local/apr/bin/apr-1-config --with-java-home=$JAVA_HOME --with-ssl=$HOME/OPENSSL --prefix=/usr/local/apr
RUN make && make install
FROM adoptopenjdk/openjdk11:jre-11.0.10_9
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update -y && \
apt-get -y upgrade && \
apt-get install -y --no-install-recommends libssl-dev x11-apps && \
apt-get clean && \
apt-get autoremove -y --purge && \
rm -rf /var/lib/apt/lists/*
COPY --from=build /usr/local/apr /usr/local/apr
当您调用 java 来运行您的 jar 时,请设置您的库路径:
入口点 ["java","-Djava.library.path=/usr/local/apr/lib","-jar","app.jar"]
该应用程序现在启动并报告正确的库:
org.apache.catalina.core.AprLifecycleListener - Loaded Apache Tomcat Native library [1.2.31] using APR version [1.7.0].
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.