一些异常及解决方法记录(持续更新)

异常:org.springframework.http.converter.HttpMessageNotReadableException:JSON parse error: Cannot construct instance of com.类名* (although at least one Creator exists): cannot deserializ

原因:类中没有空构造函数


异常:nested exception is java.lang.NoSuchMethodError:java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer;"
本地正常,服务区上报错

原因:使用ByteBuffer来传输数据的时候,在java8和java11 中,flip方法的实现有所不同,因为粗心使用IDEA默认的java11编译后放在java8的服务器上,会出现这个问题,摘用StackOverflow上的一段话:

After searching for a while and verified through switching the installed JDK between 8 and 11, I have found that there are some changes (new overridden methods) applied to several methods (e.g. flip(), clear() ) in ByteBuffer class.

In Java 8, while calling filp() method of ByteBuffer class, since it has no implementation for this method, so it is actually calling the method from extended class, Buffer; which is returning Buffer object as below


异常:在IDEA中引入JDK的时候报错
The selected directory points to a JRE, not a JDK.
原因:使用默认的文件夹名称即可,前面的路径可以换,安装java的那个文件夹名字最好不要动,应该是类似于jdk1.8.0_121这个样的文件夹名称


异常:使用JPA时 报java.sql.SQLException: Unknown column ‘user0_.user_name’ in ‘field list’
原因:这个错误的原因很多,乍一看就是查询的列名在表里找不到,这里注意一下,在jpa的实体类中使用 @Column(name = “userName”)注解的时候,jpa会把驼峰命名的变量解析为带下划线的列名,
如:

@Column(name = "userName")

这里会被解析成user_name这个列名,但如果表里的列名就是是userName的话,要写成这样:

@Column(name = "username")

异常:使用JPA的时候,报错org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.Object[]] to type [xxx.xxx.xxx]
原因:在repository中,查询出了其他的类,repository里的查询结果是对结果类型有所限制的,如果查询结果与repository中规定的类不一致,就会出现上述异常。


异常:使用httpclient执行发送请求的时候:org.apache.http.client.ClientProtocolException

Caused by: org.apache.http.ProtocolException: Target host is not specified

原因:看看链接里有没有http://和https://???


异常:Encountered a duplicated sql alias [xxxx] during auto-discovery of a native-sql query

原因:就是jpa使用的时候的查询结果有重复的字段

你可能感兴趣的:(自己总结)