我有一个在 apache Tomcat 中运行的第 3 方 java webapp。我们正在使用 docker 来运行这个应用程序。在我的机器上运行时,我们收到一个错误
我想强调的是,我们不建造这个.war
。我们不拥有这个.war
。我们只是试图启动一个运行这个已经构建的代码的 docker 容器。
javax.servlet.ServletException: Servlet execution threw an exception
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
与细节
java.lang.IncompatibleClassChangeError: Class javax.ws.rs.core.Response$Status does not implement the requested interface javax.ws.rs.core.Response$StatusType
在网上对此进行了一些调查,发现很多人都遇到了与运动衫罐子冲突的问题。我们不应该有这个问题,因为我们使用 docker for mac ......这适用于跨多个 docker 版本的其他所有人的机器。
我已经多次清除并重新安装 docker,在每次重新启动之间重新启动我的机器。我使用了与它工作的机器相同的版本。
我在 OSX Sierra 10.12.2
泊坞窗图像基于tomcat:8.5.9-jre8-alpine
它将相关文件复制.war
到$CATALINA_HOME/webapps/
单个 log4j.jar
以及$CATALINA_HOME/lib/
两个 .properties 文件。
这台特定机器上是否有任何可能干扰容器的东西?
Dockerfile如下
FROM tomcat:8.5.9-jre8-alpine@sha256:780c0fc47cf5e212bfa79a379395444a36bbd67f0f3cd9d649b90a74a1a7be20
ENV JAVA_OPTS="-Xms2048m -Xmx2048m"
WORKDIR $CATALINA_HOME
COPY ./target/lib/* $CATALINA_HOME/lib/
COPY ./target/<appname>.war $CATALINA_HOME/webapps/
EXPOSE 8080
CMD ["catalina.sh", "run"]