Tag Archives: java

JUnit test classes error: java.lang.IllegalStateException: Failed to load ApplicationContext

Problem description

When running JUnit test class, the following error message is reported:


java.lang.IllegalStateException: Failed to load ApplicationContext

	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132)
	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:123)
	at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)
	at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)
	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverEndpointExporter' defined in class path resource [org/jeecg/config/WebSocketConfig.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1794)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:405)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
	... 25 more
Caused by: java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available
	at org.springframework.util.Assert.state(Assert.java:76)
	at org.springframework.web.socket.server.standard.ServerEndpointExporter.afterPropertiesSet(ServerEndpointExporter.java:107)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1853)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1790)
	... 41 more

Error reporting reason

Websocket needs to be started by relying on containers such as Tomcat

Solution:

Add “webenvironment = springboottest. Webenvironment. Random_port” after springboottest, which means to create a web application context.

For a complete example, refer to the following code:

package org.jeecg;

import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.info.cache.DataCache;
import org.jeecg.modules.info.service.IWrSeasonBService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;


@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Slf4j
public class DataCacheTest {

    @Autowired
    DataCache dataCahche;

    @Autowired
    IWrSeasonBService iWrSeasonBService;


    @Test
    public void irrSeasonTest() {
        log.info("========================");
        log.info("irrigation season cache test");
        log.info("irrigation season name:" + "spring irrigation");
        String str = dataCahche.getStartEndDateBySeasonNm("spring irrigation");
        // assertEquals("2021-03-01,2021-04-30", str);
        String[] arr = str.split(",");
        if (arr != null && !arr.equals("null")) {
            log.info("Start date, end date:" + arr[0] + "," + arr[1]);
        } else {
            log.info("Record cache does not exist");
        }
        log.info("========================");
    }

}

[Solved] org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class


  .   ____          _            __ _ _
 /\\/___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, |////
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.6.RELEASE)

2021-10-20 18:20:57.801  INFO 13176 --- [           main] cn.com.topsec.hgdsmp.web.WebApplication  : Starting WebApplication on DESKTOP-CXH with PID 13176 (F:\TopSecWork\06.dsmp\web\target\classes started by lenovo in F:\TopSecWork\06.dsmp\web)
2021-10-20 18:20:57.803  INFO 13176 --- [           main] cn.com.topsec.hgdsmp.web.WebApplication  : No active profile set, falling back to default profiles: default
2021-10-20 18:20:58.465  WARN 13176 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [cn.com.topsec.hgdsmp.web.WebApplication]; nested exception is java.io.FileNotFoundException: class path resource [org/jeecgframework/minidao/aspect/EmptyInterceptor.class] cannot be opened because it does not exist
2021-10-20 18:20:58.469  INFO 13176 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-10-20 18:20:58.481 ERROR 13176 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [cn.com.topsec.hgdsmp.web.WebApplication]; nested exception is java.io.FileNotFoundException: class path resource [org/jeecgframework/minidao/aspect/EmptyInterceptor.class] cannot be opened because it does not exist
	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:181) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:315) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:232) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:275) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:95) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:705) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:742) [spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:389) [spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:311) [spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1213) [spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1202) [spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE]
	at cn.com.topsec.hgdsmp.web.WebApplication.main(WebApplication.java:30) [classes/:na]
Caused by: java.io.FileNotFoundException: class path resource [org/jeecgframework/minidao/aspect/EmptyInterceptor.class] cannot be opened because it does not exist
	at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:180) ~[spring-core-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:51) ~[spring-core-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:103) ~[spring-core-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.boot.type.classreading.ConcurrentReferenceCachingMetadataReaderFactory.createMetadataReader(ConcurrentReferenceCachingMetadataReaderFactory.java:86) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE]
	at org.springframework.boot.type.classreading.ConcurrentReferenceCachingMetadataReaderFactory.getMetadataReader(ConcurrentReferenceCachingMetadataReaderFactory.java:73) ~[spring-boot-2.1.6.RELEASE.jar:2.1.6.RELEASE]
	at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:81) ~[spring-core-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassParser.asSourceClass(ConfigurationClassParser.java:682) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassParser$SourceClass.getInterfaces(ConfigurationClassParser.java:1008) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassParser.processInterfaces(ConfigurationClassParser.java:375) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:323) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:242) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:191) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:295) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:242) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:199) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:167) ~[spring-context-5.1.8.RELEASE.jar:5.1.8.RELEASE]
	... 13 common frames omitted

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [cn.com.topsec.hgdsmp.web.WebApplication]; nested exception is java.io.FileNotFoundException: class path resource [org/jeecgframework/minidao/aspect/EmptyInterceptor.class] cannot be opened because it does not exist
	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:181)
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:315)
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:232)
	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:275)
	at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:95)
	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:705)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:742)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:389)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:311)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1213)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1202)
	at cn.com.topsec.hgdsmp.web.WebApplication.main(WebApplication.java:30)
Caused by: java.io.FileNotFoundException: class path resource [org/jeecgframework/minidao/aspect/EmptyInterceptor.class] cannot be opened because it does not exist
	at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:180)
	at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:51)
	at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:103)
	at org.springframework.boot.type.classreading.ConcurrentReferenceCachingMetadataReaderFactory.createMetadataReader(ConcurrentReferenceCachingMetadataReaderFactory.java:86)
	at org.springframework.boot.type.classreading.ConcurrentReferenceCachingMetadataReaderFactory.getMetadataReader(ConcurrentReferenceCachingMetadataReaderFactory.java:73)
	at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:81)
	at org.springframework.context.annotation.ConfigurationClassParser.asSourceClass(ConfigurationClassParser.java:682)
	at org.springframework.context.annotation.ConfigurationClassParser$SourceClass.getInterfaces(ConfigurationClassParser.java:1008)
	at org.springframework.context.annotation.ConfigurationClassParser.processInterfaces(ConfigurationClassParser.java:375)
	at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:323)
	at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:242)
	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:191)
	at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:295)
	at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:242)
	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:199)
	at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:167)
	... 13 more

Process finished with exit code 0

Solution: remove <–< scope> system Method, using Maven warehouse

!-- JimuReport import start -->
        <dependency>
            <groupId>org.jeecgframework.jimureport</groupId>
            <artifactId>jimureport-spring-boot-starter</artifactId>
            <version>1.4.0-beta</version>
            <!--<scope>system</scope>
            <systemPath>${project.basedir}/lib/jimureport-spring-boot-starter-1.4.0-beta.jar</systemPath>-->
        </dependency>

Springboot integration RabbitMQ times error: Failed to check/redeclare auto-delete queue(s).

Today, when the company server rabbitmq related configuration is changed to local related configuration in the code, an error is reported: failed to check/redeclare auto delete queue (s)

Error reporting reason:

15672 is the port of the web management interface; 5672 is the port accessed by MQ, so changing the port in the configuration file to 5672 is OK;

IntelliJ idea error: Java: compilation failed: solution to internal java compiler error

Method 1: it may be due to heap memory problems

In setting — & gt; Build,Execution,Deployment–> Build process heap size (Mbytes) found in compiler: 700 changed to 1024 (as appropriate)

Method 2: it may be due to project coding

PS: I can compile it by changing it to GBK. The system default GBK format is invalid and needs to be manually changed to GBK

Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters:

Question content:

{
    "error": {
        "root_cause": [
            {
                "type": "mapper_parsing_exception",
                "reason": "Root mapping definition has unsupported parameters:  [article : {properties={id={index=not_analyzed, store=true, type=long}, title={analyzer=standard, index=analyzed, store=true, type=text}, content={analyzer=standard, index=analyzed, store=true, type=text}}}]"
            }
        ],
        "type": "mapper_parsing_exception",
        "reason": "Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters:  [article : {properties={id={index=not_analyzed, store=true, type=long}, title={analyzer=standard, index=analyzed, store=true, type=text}, content={analyzer=standard, index=analyzed, store=true, type=text}}}]",
        "caused_by": {
            "type": "mapper_parsing_exception",
            "reason": "Root mapping definition has unsupported parameters:  [article : {properties={id={index=not_analyzed, store=true, type=long}, title={analyzer=standard, index=analyzed, store=true, type=text}, content={analyzer=standard, index=analyzed, store=true, type=text}}}]"
        }
    },
    "status": 400
}

Wrong configuration

{
  "mappings": {
    "article": {
      "properties": {
        "id": {
          "type": "long",
          "store": true,
          "index":"not_analyzed"
        },
        "title": {
          "type": "text",
          "store": true,
          "index":"analyzed",
          "analyzer":"standard"
        },
        "content": {
          "type": "text",
          "store": true,
          "index":"analyzed",
          "analyzer":"standard"
        } 
      }
    } 
  }
}

Modify configuration

{
  "mappings": {
      "properties": {
        "id": {
          "type": "long",
          "store": true
        },
        "title": {
          "type": "text",
          "store": true,
          "analyzer":"standard"
        },
        "content": {
          "type": "text",
          "store": true,
          "analyzer":"standard"
        } 
      }
  }
}

Cause of problem: ES7 adjustment for configuration

Fastjson Error: Error: Cannot create inner bean ‘org.springframework.http.converter.json.MappingJackson2HttpMessageConverter

Error: Cannot create inner bean ‘org.springframework.http.converter.json.MappingJackson2HttpMessageConverter#0

The spring-mvc.xml configuration file is written like this

 <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                 <property name="objectMapper">
                     <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                         <property name="failOnEmptyBeans" value="false"/>
                     </bean>
                 </property>
             </bean>

reason:

Only the fastjosn dependency is imported, and the following dependency is not imported

 <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
             <version>2.12.4</version>
         </dependency>

These three jar packages are missing from the generated package

jackson-annotations-2.12.4.jar jackson-databind-2.12.4.jar jackson-core-2.12.4.jar

The problem is solved after importing dependencies.

How to Solve Error: No suitable driver found for

No suitable driver found for jdbc:mysql:localhost:mysql when using JDBC to connect to MySQL database
MySQL version: 8.0.26
Change the driver to:
“jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai”

import java.sql.*;

public class JDBCTest {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        Connection conn = null;
        try {
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai","root","dcc12345");
            System.out.println("数据库连接成功");

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            if(conn != null){
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
    }
}

The writing method of the new version of MySQL driver is different from that of the previous version. Jar package 8.0. * everything is common

OpenFeign Error: {“code“:1,“msg“:“JSON parse error: Illegal character ((CTRL-CHAR, code 31))

Error Messages: [{“code”:1,”msg”:”JSON parse error: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\\r, \\n, \\t) is allowed between tokens; nested exception is com.fasterxml.jackson.core.JsonPars… (401 bytes)]
Error:

2021-10-18 20:39:15.514 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] {"fileName":"9e43ef61.png","fileBase64":"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"}
2021-10-18 20:39:15.530 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] ---> END HTTP (26027-byte body)
2021-10-18 20:39:15.575 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] <--- HTTP/1.1 500 Internal Server Error (46ms)
2021-10-18 20:39:15.576 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] cache-control: no-cache, no-store, max-age=0, must-revalidate
2021-10-18 20:39:15.576 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] connection: close
2021-10-18 20:39:15.576 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] content-type: application/json
2021-10-18 20:39:15.576 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] date: Mon, 18 Oct 2021 12:39:15 GMT
2021-10-18 20:39:15.577 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] expires: 0
2021-10-18 20:39:15.577 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] pragma: no-cache
2021-10-18 20:39:15.577 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] x-content-type-options: nosniff
2021-10-18 20:39:15.577 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] x-frame-options: DENY
2021-10-18 20:39:15.577 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] x-xss-protection: 1; mode=block
2021-10-18 20:39:15.578 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] 
2021-10-18 20:39:15.578 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] {"code":1,"msg":"JSON parse error: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\\r, \\n, \\t) is allowed between tokens; nested exception is com.fasterxml.jackson.core.JsonParseException: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\\r, \\n, \\t) is allowed between tokens\n at [Source: (PushbackInputStream); line: 1, column: 2]","total":0,"data":null}
2021-10-18 20:39:15.578 DEBUG [jumper-ecds-rongganlin,f5c0c6b07d96fcab,f5c0c6b07d96fcab] 14180 --- [  XNIO-1 task-2] c.j.b.e.a.feign.rbac.FeignQiNiuService   : [FeignQiNiuService#fileBase64] <--- END HTTP (401-byte body)
feign.FeignException$InternalServerError: [500 Internal Server Error] during [POST] to [http://jumper-rbac/system/upload/fileBase64] [FeignQiNiuService#fileBase64(Map)]: [{"code":1,"msg":"JSON parse error: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\\r, \\n, \\t) is allowed between tokens; nested exception is com.fasterxml.jackson.core.JsonPars... (401 bytes)]
	at feign.FeignException.serverErrorStatus(FeignException.java:231)

Reference log:

code:

Interface scenario: the data transmitted by the body is relatively large. Gzip compression has been used.

Error analysis reason: the message content is large, and some of them have not been transmitted in the past. Therefore, JSON parsing reports an error.

Openfeign uses the httpurlconnection provided by JDK by default. We know that httpurlconnection has no connection pool and its performance and efficiency are relatively low. If the default is adopted, it is likely to encounter performance problems and lead to system failure.

Solution:

Change to okhttpclient mode:

feign.okhttp.enabled=true

ribbon.okhttp.enabled=true

Result: the interface is called normally. As shown below:

Add: it is said on the Internet that the combination of @ getmapping method and @ ResponseBody will report errors. I wrote a test interface filebase (such as the code posted above). The @ getmapping method used with @ ResponseBody has no [email protected] The restcontroller interface has the annotation of @ ResponseBody (as shown in the figure below).

The operation results are shown in the following two figures:

[Solved] WebFlux Error: DataBufferLimitException: Part headers exceeded the memory usage limit of 8192 bytes

Question:

An error occurs when Webflux uploads a file:

14:32:24.628 [61667d78915db10adaa025b4da32871f/daa025b4da32871f] [reactor-http-epoll-4] ERROR o.s.w.s.a.HttpWebHandlerAdapter - [7161d1a8-33] 500 Server Error for HTTP POST "/api/XXXXX/XXXXX"
org.springframework.core.io.buffer.DataBufferLimitException: Part headers exceeded the memory usage limit of 8192 bytes
        at org.springframework.http.codec.multipart.MultipartParser$HeadersState.onNext(MultipartParser.java:360)
        Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
        |_ checkpoint ⇢ org.springframework.security.web.server.authentication.logout.LogoutWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.savedrequest.ServerRequestCacheWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.authentication.AuthenticationWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.authentication.AuthenticationWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.context.ReactorContextWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.header.HttpHeaderWriterWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.config.web.server.ServerHttpSecurity$ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.cloud.sleuth.instrument.web.TraceWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ HTTP POST "/api/iot/notice/add" [ExceptionHandlingWebHandler]
Stack trace:
                at org.springframework.http.codec.multipart.MultipartParser$HeadersState.onNext(MultipartParser.java:360)
                at org.springframework.http.codec.multipart.MultipartParser.hookOnNext(MultipartParser.java:104)
                at org.springframework.http.codec.multipart.MultipartParser.hookOnNext(MultipartParser.java:46)
                at reactor.core.publisher.BaseSubscriber.onNext(BaseSubscriber.java:160)
                at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onNext(ScopePassingSpanSubscriber.java:90)
                at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:120)
                at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onNext(ScopePassingSpanSubscriber.java:90)
                at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:199)
                at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onNext(ScopePassingSpanSubscriber.java:90)
                at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:120)
                at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:265)
                at reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:371)
                at reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:381)
                at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:535)
                at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:94)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
                at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
                at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:252)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
                at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
                at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
                at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
                at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:311)
                at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:432)
                at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
                at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
                at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
                at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
                at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
                at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
                at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:795)
                at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe$1.run(AbstractEpollChannel.java:388)
                at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
                at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
                at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:384)
                at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
                at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
                at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
                at java.lang.Thread.run(Thread.java:882)

reason:

You can only upload files with a maximum size of 8KB, which exceeds the limit and cannot be uploaded normally

Solution:

Method I (not effective):

Direct setting    max-in-memory-size   It can take effect

spring:
  codec:
    max-in-memory-size: 100MB

However, the above code does not take effect in the spring 2.X.x version. The official said it was solved. It is estimated that it was solved in the later version, but the project has been produced. It is certainly impossible to change the version now, so we have to find another way. During his startup, debug found that it was set to 262144 when initializing the code:

Method II:

Configure configuration. In the configuration class of webfluxconfigurer in implements, implement configurehttpmessagecodes for configuration. The example is as follows


import org.springframework.context.annotation.Configuration;
import org.springframework.http.codec.ServerCodecConfigurer;
import org.springframework.http.codec.multipart.DefaultPartHttpMessageReader;
import org.springframework.http.codec.multipart.MultipartHttpMessageReader;
import org.springframework.web.reactive.config.WebFluxConfigurer;

@Configuration
public class WebConfig implements WebFluxConfigurer {

    @Override
    public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
        DefaultPartHttpMessageReader partReader = new DefaultPartHttpMessageReader();
        // 9 KiB, default is 8 KiB
        partReader.setMaxHeadersSize(100*1024*1024);
        partReader.setEnableLoggingRequestDetails(true);

        MultipartHttpMessageReader multipartReader = new MultipartHttpMessageReader(partReader);
        multipartReader.setEnableLoggingRequestDetails(true);

        configurer.defaultCodecs().multipartReader(multipartReader);

    }
}

Done!

[Solved] Hongmeng compiles error: Unable to find the java component with apiVersion 4.

Problem phenomenon

SdkError: DOWNLOAD_SDK_ERROR
	 > Cause: Unable to find the java component with apiVersion 4.
	 > Solution: 
		1.Open SDK Manager and download java.
		2.Alternatively, modify the compileSdkVersion settings in the project- and module-level build.gradle files. 

Solution

Modify the build.gradle file:

ohos {
    compileSdkVersion 4
    defaultConfig {
        compatibleSdkVersion 3
    }
}

Change to:

ohos {
    compileSdkVersion 5
    defaultConfig {
        compatibleSdkVersion 3
    }
}