Tomcat9在带有java17的docker容器中找不到org.apache.ibatis



我正试图重写现有的java应用程序,将其升级到java17和tomcat 9以及dockerization但是,当我试图在docker容器中运行它时,我看到下面的错误

Caused by: java.lang.Error: Unresolved compilation problems: 
The import org.apache.ibatis cannot be resolved
The import org.apache.ibatis cannot be resolved
BaseTypeHandler cannot be resolved to a type
The method getNullableResult(ResultSet, String) of type StringBoolHandler must override or implement a supertype method
The method getNullableResult(ResultSet, int) of type StringBoolHandler must override or implement a supertype method
The method getNullableResult(CallableStatement, int) of type StringBoolHandler must override or implement a supertype method
JdbcType cannot be resolved to a type
at com.XXX.XXX.mybatis.typehandlers.StringBoolHandler.<init>(StringBoolHandler.java:11)

但是StringBoolHandler类覆盖了上面提到的方法,IDE中也没有中的编译器错误

我能够在IDE 中成功启动并运行应用程序

这是我的档案

FROM openjdk:17-jdk
FROM maven:3.8.4 as maven_builder
WORKDIR /app
ADD src /app/src
ADD war /app/war
#Prepare by downloading dependencies
ADD pom.xml /app/pom.xml
RUN ["mvn", "dependency:resolve"]
RUN ["mvn", "verify"]
#Adding source, compile and package into a fat jar
RUN ["mvn","clean", "install", "-Dmaven.test.skip=true"]
FROM tomcat:9.0-jdk17
# adding new relic config
RUN mkdir -p /usr/local/tomcat/newrelic
COPY war/WEB-INF/lib/newrelic.jar /usr/local/tomcat/newrelic/newrelic.jar
COPY war/WEB-INF/newrelic.yml /usr/local/tomcat/newrelic/newrelic.yml
ENV JAVA_OPTS="$JAVA_OPTS -javaagent:/usr/local/tomcat/newrelic/newrelic.jar"
COPY --from=maven_builder /app/target/xxx-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/xxx.war

我能够在docker容器中部署的应用程序库中找到mybatis-3.5.7.jar

请随时向我建议任何类型的修改,使我的Dockerfile更好的

好的,我通过更改maven版本来修复它

问题是maven在构建战争文件时如何忽略mybatis导入一旦我降级了我的maven版本,它就开始工作

最新更新