错误合集3

springboot 项目启动后无日志输出直接结束的解决

错误原因:

我从公司svn仓库下xxSpringBoot 项目,等待编译完成,找到application-->main方法,启动,控制台出现一个Spring 大logo之后,没有任何响音,大概过了几秒之后,控制台输出jvm已停止

解决办法

通过百度查阅springboot 项目启动后无日志输出直接结束的解决open in new window这篇文章,给我启发,我回想起来,我电脑上的mysql版本比较高,可能是此原因导致项目启动失败。

  1. 修改项目mysql链接条件

      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
    #    改为
    		driver-class-name:  com.mysql.cj.jdbc.Driver
    
  2. 升级pom.xml的mysql版本

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    <!--  <version>5.1.39</version> -->
    	<version>8.0.19</version>
     </dependency>
    
    

SpringBoot3bug?or mybatis-plus bug?

**错误原因:**在创建SSMP项目时,使用最新的SpringBoot3.0集成mybatis-plus,发现死活无法注入@mapper。导致dao自动注入失败。

**解决办法:**前几天创建SpringBoot项目还可以用,为什么现在注入失败,经过多方查证无果,最后将SpringBoot版本降级到2.7.5就解决了。

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
<!--        <version>3.0.0</version>-->
        <version>2.7.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

目前由于技术能力有限,不确定时SpringBoot3的bug,还是mybatis-plus-boot-starter还未兼容SpringBoot3,等后面有空分析其原因

严重 [RMI TCP Connection(2)-127.0.0.1] org.apache.tomcat.util.modeler.BaseModelMBean.invoke 调用方法[manag

严重 [RMI TCP Connection(2)-127.0.0.1] org.apache.tomcat.util.modeler.BaseModelMBean.invoke 调用方法[manageApp]时发生异常

在使用注解的时候,一定要注意一些小细节。

这个位置一定要加斜杠,不然就会出现这个问题。

Tomcat部署报错:org.apache.catalina.LifecycleException: 无法启动组件[StandardEngine[CataliSna].StandardHost[/**]

报错内容

17-May-2022 17:36:34.786 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/8.5.78]
17-May-2022 17:36:34.811 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/usr/local/apache-tomcat-8.5.78/webapps/project]
17-May-2022 17:36:35.019 严重 [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
	org.apache.catalina.LifecycleException: 无法启动组件[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/project]]
		at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
		at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
		at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:727)
		at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:695)
		at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1177)
		at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1925)
		at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
		at java.util.concurrent.FutureTask.run(FutureTask.java:266)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
		at java.lang.Thread.run(Thread.java:748)
	Caused by: java.lang.IllegalArgumentException: 找到多个名为spring_web的片段。这是不合法的相对排序。有关详细信息,请参阅Servlet规范的第8.2.2 2c节。考虑使用绝对排序。
		at org.apache.tomcat.util.descriptor.web.WebXml.orderWebFragments(WebXml.java:2206)
		at org.apache.tomcat.util.descriptor.web.WebXml.orderWebFragments(WebXml.java:2164)
		at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1084)
		at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:779)
		at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)
		at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
		at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5130)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
		... 10 more
17-May-2022 17:36:35.020 严重 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 无法部署应用目录 [/usr/local/apache-tomcat-8.5.78/webapps/project]
	java.lang.IllegalStateException: 启动子级时出错
		at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:757)
		at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:727)
		at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:695)
		at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1177)
		at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1925)
		at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
		at java.util.concurrent.FutureTask.run(FutureTask.java:266)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
		at java.lang.Thread.run(Thread.java:748)
	Caused by: org.apache.catalina.LifecycleException: 无法启动组件[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/project]]
		at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
		at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
		... 9 more
	Caused by: java.lang.IllegalArgumentException: 找到多个名为spring_web的片段。这是不合法的相对排序。有关详细信息,请参阅Servlet规范的第8.2.2 2c节。考虑使用绝对排序。
		at org.apache.tomcat.util.descriptor.web.WebXml.orderWebFragments(WebXml.java:2206)
		at org.apache.tomcat.util.descriptor.web.WebXml.orderWebFragments(WebXml.java:2164)
		at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1084)
		at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:779)
		at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)
		at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
		at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5130)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
		... 10 more
17-May-2022 17:36:35.028 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/usr/local/apache-tomcat-8.5.78/webapps/project]的部署已在[209]毫秒内完成
17-May-2022 17:36:35.028 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/usr/local/apache-tomcat-8.5.78/webapps/docs]
17-May-2022 17:36:35.165 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/usr/local/apache-tomcat-8.5.78/webapps/docs]的部署已在[137]毫秒内完成
17-May-2022 17:36:35.165 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/usr/local/apache-tomcat-8.5.78/webapps/manager]
17-May-2022 17:36:35.186 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/usr/local/apache-tomcat-8.5.78/webapps/manager]的部署已在[21]毫秒内完成
17-May-2022 17:36:35.186 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/usr/local/apache-tomcat-8.5.78/webapps/examples]

重点:Caused by: java.lang.IllegalArgumentException: 找到多个名为spring_web的片段。这是不合法的相对排序。有关详细信息,请参阅Servlet规范的第8.2.2 2c节。考虑使用绝对排序。

解决办法

Servelet 规范文档open in new window

在项目的WEB-INF目录下找到web.xml文件 添加 absolute-ordering 标签重启服务 即可解决问题

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="schedule-console" version="3.0">
   <!-- 此处添加 absolute-ordering 标签 -->
  <absolute-ordering/>
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:/applicationContext*.xml</param-value>
    </init-param>
  </servlet>
  ...此处省略
</web-app>

参考链接:Tomcat部署报错,无法启动组件open in new window

解决办法二

进入tomcat配置文件

image-20231121111823876

替换下这两行

image-20231121112320077

配置如下:

#tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar,\
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*
#tomcat.util.scan.DefaultJarScanner.jarsToSkip=*.jar,\
tomcat.util.scan.DefaultJarScanner.jarsToSkip=*

如果没有就直接添加。

初步判断是启动的时候有什么依赖包没扫到,排查太复杂,直接给他整成全扫。

没想到还真整好了。

参考链接open in new window

Centos使用Maven构建项目失败,提示No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK

Maven 构建失败了,提示没有编译器

但是我们之前确实是安装了 jdk的呀,java -version也有输出

image-20230509165342406

但是输入javac 确实提示命令没找到

说明我们之前只是安装了jre 没有安装jdk, 所以没有javac工具,百度查找 解决方案open in new window后,

进入根目录,输入yum install -y devel即可

cd / 

yum install -y java-devel

image-20230509165537855

重新输入 javac, 发现这个命令可以找到了

image-20230509165624574

再次执行maven命令构建项目

image-20230509165643256

可能的根本原因包括-Xss的设置过低和非法的循环继承依赖项。正在处理的类层次结构是[org.bouncycastle.asn1.ASN1EncodableVector

tomcat启动时报子容器启动失败非法循环依赖open in new window的错误

在项目部署时遇到无法启动组件[StandardEngine[Catalina],可能的根本原因包括-Xss的设置过低和非法的循环继承依赖项

错误原因

依赖冲突,bcprov-jdk15on-x.xx.jar and bcprov-jdk16-x.xx.jar 的冲突导致

解决方案

找到tomcat配置文件/usr/local/tomcat/conf/catalina.propertiesopen in new window

编辑文件,添加 bcprov-jdk15on-.jar bcprov-.jar

bcprov-jdk15on-.jar\
bcprov-.jar\
image-20231120112905335

参考连接open in new window

Loading...