天天看點

【持續更新】SpringCloud 學習之異常解決辦法總結

快速導航

        • java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder
        • com.jcraft.jsch.JSchException: Auth fail
        • 關于 alibaba nacos 注冊成功無法檢視服務問題、nacos 無法啟動問題
        • i.s.c.r.netty.NettyClientChannelManager : no available service 'null' found, please make sure registry config correct
        • io.seata.common.exception.FrameworkException: can not register RM,err:can not connect to services-server
        • io.seata.common.exception.FrameworkException: connect failed, can not connect to services-server.
        • java.lang.IllegalStateException: availableProcessors is already set to [8], rejecting [8]
        • com.fasterxml.jackson.core.JsonParseException: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed between tokens

java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder

原因: Springboot 與 Springcloud 版本沖突問題

解決: Springboot 與 Springcloud 版本對應關系可以去spring官網檢視

com.jcraft.jsch.JSchException: Auth fail

Cannot clone or checkout repository
           

原因: 無權限操作,檢查使用者名和密碼

解決: 輸入正确的使用者名和密碼,隻有

uri

采用

https

的方式才需要配置使用者名和密碼,如下圖所示:

【持續更新】SpringCloud 學習之異常解決辦法總結

關于 ssh 的配置參數官網: Git SSH configuration using properties

【持續更新】SpringCloud 學習之異常解決辦法總結

關于 alibaba nacos 注冊成功無法檢視服務問題、nacos 無法啟動問題

原因: Spring Cloud 、Spring Boot 和 Spring Cloud Alibaba 版本不一緻導緻

**解決: ** 參考官網

【持續更新】SpringCloud 學習之異常解決辦法總結
【持續更新】SpringCloud 學習之異常解決辦法總結

i.s.c.r.netty.NettyClientChannelManager : no available service ‘null’ found, please make sure registry config correct

保證 seata.tx-service-group 值與 seata.service.vgroup-mapping 中的 key 一緻,見如下截圖
           
【持續更新】SpringCloud 學習之異常解決辦法總結

io.seata.common.exception.FrameworkException: can not register RM,err:can not connect to services-server

io.seata.common.exception.FrameworkException: connect failed, can not connect to services-server.

解決:

1. 檢視nacos配置清單,seata配置是否已經導入成功
2. 檢視nacos服務清單,serverAddr是否已經注冊成功
3. 檢查client端的registry.conf裡面的namespace,registry.nacos.namespace和config.nacos.namespace填入nacos的命名空間ID,預設"",server端和client端對應,namespace 為public是nacos的一個保留控件,如果您需要建立自己的namespace,最好不要和public重名,以一個實際業務場景有具體語義的名字來命名
4. nacos上服務清單,serverAddr位址對應ip位址應為seata啟動指定ip位址,如:sh seata-server.sh -p 8091 -h 122.51.204.197 -m file
啟動時一定要指定啟動ip,另外不要指定127.0.0.1
6. 檢視seata/conf/nacos-config.txt 事務分組service.vgroupMapping.trade_group=default配置與項目分組配置名稱是否一緻
7. telnet ip 端口 檢視端口是都開放,以及防火牆狀态
           

java.lang.IllegalStateException: availableProcessors is already set to [8], rejecting [8]

java.lang.IllegalStateException: availableProcessors is already set to [8], rejecting [8]
	at io.netty.util.NettyRuntime$AvailableProcessorsHolder.setAvailableProcessors(NettyRuntime.java:51)
	at io.netty.util.NettyRuntime.setAvailableProcessors(NettyRuntime.java:87)
	at org.elasticsearch.transport.netty4.Netty4Utils.setAvailableProcessors(Netty4Utils.java:83)
	at org.elasticsearch.transport.netty4.Netty4Transport.<init>(Netty4Transport.java:113)
	at org.elasticsearch.transport.Netty4Plugin.lambda$getTransports$0(Netty4Plugin.java:86)
	at org.elasticsearch.client.transport.TransportClient.buildTemplate(TransportClient.java:186)
	at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:280)
	at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:128)
	at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:114)
	at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:104)
	at com.gridsum.zhmsapi.config.EsConfig.getTransportClient(EsConfig.java:35)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
	... 70 common frames omitted
           

解決辦法:

在 bean 中 set 前加入下面代碼或在啟動類main方法最前加入

System.setProperty("es.set.netty.runtime.available.processors", "false");
           

com.fasterxml.jackson.core.JsonParseException: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed between tokens

Exception in thread "main" org.springframework.web.client.RestClientException: Error while extracting response for type [class com.zsh.extension.model.ResponseBodyResult] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: 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
at [Source: (PushbackInputStream); line: 1, column: 2]
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:119)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:998)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:981)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:741)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:674)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:583)
at com.zsh.settlement.controller.SettBillController.main(SettBillController.java:67)
Caused by: org.springframework.http.converter.HttpMessageNotReadableException: 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
at [Source: (PushbackInputStream); line: 1, column: 2]
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:252)
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:228)
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:104)
... 6 more
Caused by: com.fasterxml.jackson.core.JsonParseException: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed between tokens
at [Source: (PushbackInputStream); line: 1, column: 2]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1840)
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:712)
at com.fasterxml.jackson.core.base.ParserMinimalBase._throwInvalidSpace(ParserMinimalBase.java:690)
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._skipWSOrEnd(UTF8StreamJsonParser.java:2975)
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:715)
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4340)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4189)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3258)
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:240)
... 8 more

           

原因: restTemplete 不支援 gzip 解壓

解決辦法:

  • 方案一:檢查請求頭中是否存在 Accept-Encoding : gzip ,如果有,可去掉
  • 方案二:檢查 Nginx 是否配置了 gzip 壓縮 json ,如果有,可去掉
  • 方案三:
HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();
RestTemplate restTemplate = new RestTemplate(clientHttpRequestFactory);
           
參考: https://stackoverflow.com/questions/34415144/how-to-parse-gzip-encoded-response-with-resttemplate-in-spring-web

繼續閱讀