gpt4 book ai didi

java - jar在catalina主页的lib文件夹中时,context.xml中类的ClassNotFoundException

转载 作者:行者123 更新时间:2023-12-02 19:15:24 26 4
gpt4 key购买 nike

我正在关注this tuturial,以使我当前的wicket项目与Redis Session Management一起工作。
但是,我无法使context.xml正常工作。
我用CatalinaRedisSessionStore和RedisCache 2个文件制作一个JAR,然后将那个jar放在tomcat的lib文件夹中。
启动我的应用程序后,出现此错误:

SEVERE [main] org.apache.tomcat.util.digester.Digester.startElement Begin event threw exception
java.lang.ClassNotFoundException: com.company.web.wicket.redis.CatalinaRedisSessionStore
我的context.xml看起来像这样:
<?xml version="1.0" ?>
<Context>
<Manager className="org.apache.catalina.session.PersistentManager"
maxIdleBackup="1"
minIdleSwap="0"
maxIdleSwap="0"
processExpiresFrequency="1"
saveOnRestart='true'>
<Store className="com.company.web.wicket.redis.CatalinaRedisSessionStore"/>
</Manager>
</Context>
我正在使用 azul/zulu-openjdk-alpine:11在Docker容器中运行我的应用程序
当我检查我的docker容器时,jar文件位于tomcat主页的lib文件夹中,因此根据足以使tomcat查找类的文档。下面我放了我的Dockerfile。
有人知道为什么找不到该类吗?
Docker文件
FROM azul/zulu-openjdk-alpine:11


RUN apk update && apk add bash

#set timezone to "Europe/Amsterdam"
RUN apk add tzdata && cp /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime && echo "Europe/Amsterdam" > /etc/timezone && apk del tzdata

COPY /build/distributions/Application*.zip /opt/application/

RUN unzip /opt/application/Application*zip -d /opt/application && rm /opt/application/Application*.zip && chmod 775 /opt/application/apache-tomcat/bin/catalina.sh && chmod 775 /opt/application/apache-tomcat/bin/docker-healthcheck.sh

WORKDIR /opt/application/apache-tomcat

EXPOSE 8080 9875 9000

# Define default command.
CMD ["/opt/application/apache-tomcat/bin/dockerstart.sh","arg1"]

HEALTHCHECK --interval=1m --timeout=10s --retries=3 --start-period=2m CMD /opt/application/apache-tomcat/bin/docker-healthcheck.sh
执行jar xf redis_session.jar后,文件夹结构如下:
jar file structure

最佳答案

我假设您复制到Docker镜像中的Application * .zip文件包含Tomcat安装。
如下更改您的Dockerfile应该可以解决问题:

FROM azul/zulu-openjdk-alpine:11

RUN apk update && apk add bash

#set timezone to "Europe/Amsterdam"
RUN apk add tzdata && \
cp /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime && \
echo "Europe/Amsterdam" > /etc/timezone && \
apk del tzdata

COPY /build/distributions/Application*.zip /tmp/

# Setting CATALINA_HOME and updating the PATH env vars is crucial
# since you use an inofficial Tomcat base image
ENV CATALINA_HOME /usr/local/tomcat
ENV PATH ${CATALINA_HOME}/bin:${PATH}

# The default path of Tomcat is /usr/local/tomcat
# So, it's a good idea to extract your application to that folder
# rather than to a custom one to avoid an unexpected behaviour of the Tomcat
RUN unzip /tmp/Application*.zip -d /usr/local && \
rm /tmp/Application*.zip && \
mv /usr/local/apache-tomcat ${CATALINA_HOME} && \
chmod 775 ${CATALINA_HOME}/bin/catalina.sh && \
chmod 775 ${CATALINA_HOME}/bin/dockerstart.sh && \
chmod 775 ${CATALINA_HOME}/bin/docker-healthcheck.sh

WORKDIR ${CATALINA_HOME}

EXPOSE 8080 9875 9000

# Define default command.
# Everything inside /usr/local/tomcat/bin is exposed through the $PATH env var we defined at the beginning.
# So we can access them globally without having to specify the exact script path
CMD ["dockerstart.sh", "run"]

HEALTHCHECK --interval=1m --timeout=10s --retries=3 --start-period=2m CMD ${CATALINA_HOME}/bin/docker-healthcheck.sh

关于java - jar在catalina主页的lib文件夹中时,context.xml中类的ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63777820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com