IDEA/Springboot/SpringCloud開發常見問題

1.idea Module is not specified 異常處理

問題通常出現在:當我們由於項目未知異常選擇手動刪除idea項目配置,並重啓idea嘗試使其生效時。

在File -> Project Structure -> Modules查看Modules信息,如果有刪除,然後刪掉項目重新建立即可。

2.Could not autowire. No beans of 'WeiXinAppServiceFeign' type found. less... (Ctrl+F1) 
Inspection info:Checks autowiring problems in a bean class.

Description:

Field weiXinAppServiceFeign in com.tx.servicemember.impl.MemberServiceImpl required a bean of type 'com.tx.servicemember.feign.WeiXinAppServiceFeign' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'com.tx.servicemember.feign.WeiXinAppServiceFeign' in your configuration.

 

嘗試了各種方法,最後是qq上的同學提供了有效信息,註解問題。最終查出來的問題是註解使用錯誤:

啓動類上:@FeignClients  更正爲@EnableFeignClient

接口實現類上:增加@Service

3.Swagger2異常:java.lang.NumberFormatException:For input string:""

2019-01-07 18:23:03.830  WARN 21940 --- [nio-8080-exec-6] i.s.m.p.AbstractSerializableParameter    : Illegal DefaultValue  for parameter type integer

java.lang.NumberFormatException: For input string: ""
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.8.0_171]
	at java.lang.Long.parseLong(Long.java:601) ~[na:1.8.0_171]
	at java.lang.Long.valueOf(Long.java:803) ~[na:1.8.0_171]
	at io.swagger.models.parameters.AbstractSerializableParameter.getExample(AbstractSerializableParameter.java:412) ~[swagger-models-1.5.20.jar:1.5.20]
	at sun.reflect.GeneratedMethodAccessor87.invoke(Unknown Source) ~[na:na]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_171]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_171]
	at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:654) [jackson-databind-2.6.5.jar:2.6.5]
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:675) [jackson-databind-2.6.5.jar:2.6.5]
	at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) [jackson-databind-2.6.5.jar:2.6.5]
	at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119) [jackson-databind-2.6.5.jar:2.6.5]
	at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79) [jackson-databind-2.6.5.jar:2.6.5]
	at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18) [jackson-databind-2.6.5.jar:2.6.5]
	at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:693) [jackson-databind-2.6.5.jar:2.6.5]
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:675) [jackson-databind-2.6.5.jar:2.6.5]
	at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157) [jackson-databind-2.6.5.jar:2.6.5]

解決方法:pom.xml中引入包

        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>1.5.21</version>
        </dependency>
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-models</artifactId>
            <version>1.5.21</version>
        </dependency>

 4.The bean 'proxyRequestHelper', defined in class path resource

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-10-11 14:30:35.757 ERROR 31656 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

The bean 'proxyRequestHelper', defined in class path resource [org/springframework/cloud/netflix/zuul/ZuulProxyAutoConfiguration$NoActuatorConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [org/springframework/cloud/netflix/zuul/ZuulProxyAutoConfiguration$EndpointConfiguration.class] and overriding is disabled.

Action:

Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

出現此類錯誤是因爲原因是SpringCloud與SpringBoot版本不一致。在pom.xml中增加

<!--管理依賴-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

5.Docker狀態一直是Restarting,啓動失敗如何解決

查看日誌,仔細查看問題,很多時候錯誤的提示不在第一行也不在最後一行,需要仔細去查找

docker logs 1d3e129052c2

原來是內存溢出造成docker進程被殺死,查看內存發現只有509M,一般容器需要2G的內存,只能升配內存了。

//查看服務器內存使用情況
free -mh

 

6.解決maven上傳jar包報錯:Return code is: 400 , ReasonPhrase:Repository version policy

 出現場景:將maven項目打成jar包,發佈到maven私有倉庫時,報錯Return code is: 400 , ReasonPhrase:Repository version policy;

原因:上傳的jar包,版本信息中包含snapshot;

解決辦法:<version>節點中去掉snapshot;

    <groupId>com.hpm.blog</groupId>
    <artifactId>spring-boot-blog</artifactId>
    <!--<version>0.0.1-SNAPSHOT</version>-->
    <version>0.0.1</version>

7.springboot整合阿波羅,Located meta server address http://134.175.193.156:8080 for env UNKNOWN from com.ctrip.framework.apollo.internals.DefaultMetaServerProvider

-Denv=DEV

Init Apollo Local Config failed - namespace: application, reason: Load config from local config failed! [Cause: Cannot read from local cache file C:\opt\data\dhcc-shop-service-weixin\config-cache\dhcc-shop-service-weixin+default+application.properties]. 

 Long polling failed, will retry in 1 seconds. appId: 8000000001, cluster: default, namespaces: application, long polling url: http://172.16.0.16:8080/notifications/v2?cluster=default&appId=8000000001&ip=172.18.40.193&notifications=%5B%7B%22namespaceName%22%3A%22application%22%2C%22notificationId%22%3A-1%7D%5D, reason: Could not complete get operation [Cause: connect timed out]

 Long polling failed, will retry in 1 seconds. appId: 8000000001, cluster: default, namespaces: application, long polling url: http://172.16.0.16:8080/notifications/v2?cluster=default&appId=8000000001&ip=172.18.40.193&notifications=%5B%7B%22namespaceName%22%3A%22application%22%2C%22notificationId%22%3A-1%7D%5D, reason: Could not complete get operation [Cause: connect timed out]

騰訊雲服務器得固定IP,EIP產品纔可以在本機查看外網IP地址,強烈建議換阿里雲,一個坑三天都在裏面爬不出來

8.Consider defining a bean of type 'tx.common.core.utils.RedisUtil' in your configuration. 

tx.common.core.utils.RedisUtil'接口與對應實現類放在了與控制器所在包的同一級目錄下,這樣的@Component註解自然是無法被識別的 

有包衝突導致的,移入到同一個項目工程下。

9.The bean 'app-tx-weixin.FeignClientSpecification', defined in null, could not be registered

多個接口上的@FeignClient(“相同服務名”)會報錯,overriding is disabled,即出現了相同的Bean名。

spring.main.allow-bean-definition-overriding=true

後面發現是這個,是因爲Springcloud和Springboot版本不兼容

  <!-- 管理依賴 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.M7</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

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

10.關於idea 中使用mybastis報出 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

如果是多個工程合併成一個工程的按如下步驟來:

1.搜索源工程中的xxxMapper.xml,看看這些文件是不是都copy到新工程對應的目錄下

2.檢查xml中的<mapper namespace="com.xxx.xxx" type="com.xxx.xxx"包路徑是否正確

如果是自己加的mapper.xml,按如下步驟:

1.檢查xml文件所在的package名稱是否和interface對應的package名稱一一對應

2.檢查xml文件的namespace是否和xml文件的package名稱一一對應

3.檢查函數名稱能否對應上

4.去掉xml文件中的中文註釋

5.隨意在xml文件中加一個空格或者空行然後保存

6.dao接口與xml的文件名不一致,接口名與Mybatis的映射文件名一定要一模一樣。

7.*Mapper.xml文件放到resource文件夾下管理

11.Class.forName提示java.lang.ClassNotFoundException:

SpringBoot運行後一直提示java.lang.ClassNotFoundException:這個錯誤。當我傳入的字符串是  完整的包名+類名,後面仔細比對發現傳入的類名與實際不相符一定要仔細檢查。

12.Exceptioninthread"main"java.lang.ClassNotFoundsException的問題

在部署Maven項目時報這個錯誤,是因爲maven導出jar包時沒有指定出口類,需要在pom文件中加入配置

             <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                    <mainClass>com.easytoolsoft.easyreport.web.WebApplication</mainClass>
                </configuration>
            </plugin>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章