问题描述:后端项目开发工具是IntelliJ IDEA,运行web项目,本地测试项目能够正常运行。将项目打包成war包之后放到本机的tomcat的webapps下报404,原因应该是版本太低,7版本和8版本有较大不同;将war包放到服务器的tomcat下报404错误
问题分析:考虑操作系统的不同对程序的影响,本地和局域网都是在windows环境中,tomcat启动时,都能实时看到tomcat的日志信息,有什么问题一目了然。而服务器用的是centos7,linux操作系统,tomcat启动后,实时日志信息不能看到,也就不知道tomcat在启动过程中是否发生了错误,为了实时查看tomcat的日志信息,在重启tomcat后,打开日志文件。
问题解决:
报错的大概意思是不能注册MBean,解决的办法就是不注册,直接将jmx设置为false
在linux系统,切换到tomcat的bin目录,依次键入
./shutdown.sh
./startup.sh
重启tomcat,然后切换到tomcat的logs目录,键入
tail -f catalina.out
就可以实时查看tomcat的日志信息,日志信息比较多,不过错误信息也是很明显的,和用开发工具调试的时候碰到的报错信息类似,很容易发现。报错信息的开头,就是如下的一段。
Unable to register MBean [HikariDataSource (null)] with key 'dataSource'; nested exception is javax.management.InstanceAlreadyExistsException: com.zaxxer.hikari:name=dataSource,type=HikariDataSource
方法就是在配置文件application.properties中,进行如下设置
spring.jmx.enabled=false
重新生成war包,测试,页面能够正常打开,功能也都正常。
问题经验:同样的war包,在windows环境中能够使用,到了linux环境中报错