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>

 

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