spring项目发布到linux上遇到的错

Posted 永不熄灭的火

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring项目发布到linux上遇到的错相关的知识,希望对你有一定的参考价值。

  在将一个spring项目部署到linux上的tomcat中时遇到了以下错误。(以下所有错误的前提都是项目在idea中正常运行)

1. tomcat10

  一直报错。第一个错误是无法将  org.springframework.web.filter.CharacterEncodingFilter 转换为  jakarta.servlet.Filter 这个是tomcat中的filter。而CharacterEncodingFilter 实现的是javax.servlet.Filter。这个问题我一直找不到,后来发现从tomcat8以后,tomcat的request默认采用UTF-8格式进行编码,也就是不必要在web.xml中添加CharacterEncodingFilter 。

  然后我将CharacterEncodingFilter 去除了,不报这个错了。但是又报了dispatchservlet无法转换为jakarta.servlet.Servlet(还是tomcat的servlet)。

  

 没办法,我试过将 javax.servlet-api 的scop改为provided,依然不行。我觉得可能是tomat10这个服务器有什么问题未解决,或者想换的错误案例较少,所以我更换成了tomcat8。果然这个错误不再发生了。

2. tomca8

  tomcat8启动找不到mybaits.yml文件,这个文件是在我的dao 模块中的resources文件家下,也就是mybatis.yml在dao的jar类路径下,然后我在dao 模块中使用@configuration完成bena的注册。这个bena的注册在idea中是可以正常获取实例的(可以找到mybatis.yml资源),但是在tomcat8中(和tomcat8无关)提示找不到,因为我之前是用的classloader.getresources方法获取资源,因为改方法不支持classpath*模糊查找,所以我更换为PathMatchingResourcePatternResolver,这个类在spring中支持查找classpath*,即在全项目路径中查找资源,这个类帮助我在idea中找到了jar包中的资源,但是在tomcat中这个类也无法正确的找到mybatis.yml这个资源,所以我将所有的属性配置文件全部放在了war包模块的resources文件夹下,这个问题先暂时以这种方式解决,后续有解决方案的时候再来解决。

  这个问题解决了,此时又报了另一个错误,如下图:

   看了这个文章:https://www.cnblogs.com/qianzf/p/7753737.html,我觉得应该是同样的问题,即tomcat对于不同保本的jar选取版本低的加载。我觉得这个DEFAULT属性应该是在低版本中无法找到对于的类。

所以我将core依赖给注释掉了。至此,问题全部解决,部分问题后修解决。

以上是关于spring项目发布到linux上遇到的错的主要内容,如果未能解决你的问题,请参考以下文章

mybatis-generator遇到的错

我用的是 spring+struts2+jdbc代码执行到(代码在下面),就报错(报的错也在下面)

Spring Boot + Jersey 类型过滤器 - 服务的错​​误请求 400 消耗 MULTIPART_FORM_DATA

在搭项目时出错导致无法运行,可能是spring中要配置数据源的错但不能确定有高手解决下不胜感激报错如下:

node.js版本更新及遇到的错

spring-boot项目打包的jar包怎么部署到linux上,并运行啊!