错误类型累积(持续更新)

工作中的错误类型以及解决方式记录

1、UnsatisfiedDependencyException :这是在将一个java类注入spring的时候报的错,说是创建某个bean失败,可能是创建的bean的类路径找不到。pom添加依赖很容易出问题

模块找不到程序包,需要重新去maven打包,mvn -install可以直接使用maven将找不到的程序包模块添加进来

2、ClassCastException:类型转换错误

3、数据库操作报错:无效标识符,有可能是属性和字段不匹配,比如说缺少字段

java.sql.SQLSyntaxErrorException: ORA-00900: 无效 SQL 语句,找不到指定执行SQL语句的表等,或者SQL语句错误

4、初始异常:java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 违反唯一约束条件 (BDC_YW_USER.SYS_HGID) 这可能是某一个字段是关联外键,不能随意插入,或者字段过大等等

其中BDC_YW_USER是数据表名,SYS_HGID是违反约束的字段

5、java.lang.NumberFormatException: For input string: "" 异常是指数字格式异常,我的是前端参数为空,所以出错

6、对List进行操作时报错java.lang.UnsupportedOperationException,后来发现操作的List是由数组转换而成的,也就是如下:

String[] array = {"1","2","3","4","5"};
        List<String> list = Arrays.asList(array);
        list.add("6");

如上操作会报异常,数组转换而成的List不能使用add添加元素。

可先将其转为ArrayList,在进行操作,如下:

String[] array = {"1","2","3","4","5"};
        List<String> list = Arrays.asList(array);
        List arrList = new ArrayList(list);
        arrList.add("6");

7、异常解决:Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

​ 数据连接池空闲时间设置过大,超过了mysql最大空闲时间

​ sprintboot:time-between-eviction-runs-millis

8、Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: org.apache.poi.hssf.usermodel.HSSFWorkbook.close()V

​ poi版本冲突,检查maven依赖,去除不需要的版本。

9、springboot 打包jar后找不到resources下文件

​ 应使用:ClassPathResource classPathResource = new ClassPathResource("importLpbExcel.json");

10、Apollo 2021-09-06 15:11:25.552 ERROR 360 --- [Apollo-ServiceLocator-1] c.c.f.a.p.c.AdminServiceAddressLocator : Get admin server address from meta server failed. env: DEV, meta server address:http://apolloConfig.gisquest.com:9100

apollo-env.properties 配置文件中 apolloConfig.gisquest.com 访问失败,换为ip修复。
local.meta=http://localhost:8080
dev.meta=http://10.160.15.34:9100
fat.meta=http://apolloConfig.gisquest.com:9100
uat.meta=http://apolloConfig.gisquest.com:9100
lpt.meta=${lpt_meta}
pro.meta=http://apolloConfig.gisquest.com:9100

11、com.alibaba.fastjson.JSONException: write javaBean error, fastjson version 1.2.73, class org.springframework.web.multipart.MultipartFileResource, fieldName : resource

接口使用实体接收参数时,含有不可序列化的参数,可使用@JSONFailed(serialize=false)排除该属性

12、通过网关访问服务提供接口时,post参数过大返回400 bad request 错误。

远程调用 feign将post参数进行url拼接,造成请求头部过大,spring boot默认头部大小为8k。解决方式为,设置参数:server.max-http-header-size: 1048576 单位为字节(1M)。

13、Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 30000, active 0, maxActive 200, creating 0, createErrorCount 7

数据库挂掉一段时间后连接池无法创建新的连接

连接池设置了关闭自动重连

//数据库服务宕机自动重连机制
dataSource.setBreakAfterAcquireFailure(true);
//连接出错后重试时间间隔
dataSource.setTimeBetweenConnectErrorMillis(60000);
//超时重试次数
dataSource.setConnectionErrorRetryAttempts(3);

同类型问题:

Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 0, maxActive 100, creating 1, createElapseMillis 686180, createErrorCount 3

keepAlive 保持连接有效

14、ftp下载文件报错:Host attempting data connection ip is not same as server ip

加上这句代码可以解决:ftpClient.setRemoteVerificationEnabled(false); 这句代码的意思是:取消服务器获取自身Ip地址和提交的host进行匹配,否则当不一致时报出以上异常。

15、java.sql.SQLRecoverableException:Closed Connection

spring使用SqlSession获取数据库连接异常,Connection connection = sqlSession.getConnection();

问题出现在Oracle数据库连接上,

数据连接池创建时未配置:dataSource.setValidationQuery("select 1 from dual");

检查当前连接是否有效,无效获取新的连接

16、java.lang.StringIndexOutOfBoundsException: String index out of range: -1

substring(int start,in end) 方法报错,字符串切割的结束数字end大于字符串的长度(多数情况为字符串为空没有处理)

17、org.springframework.transaction.NoTransactionException: No transaction aspect-managed TransactionStatus in scope

异常原因:异常捕捉手动回滚事务,没有添加注解

//手动开启事务回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

注解:@Transactional

18、nginx报错:upstream sent too big header while reading response header from upstream

请求携带的头部数据过大,配置http段:

​ proxy_buffer_size 128k;
​ proxy_buffers 32 32k;
​ proxy_busy_buffers_size 128k;

19、Result Maps collection does not contain value for java.lang.String

<select id="selectxxxx" parameterType="xx" resultMap="java.lang.String">

mybatis查询结果使用resultMap接收String类型报错,可怕的是,会影响整个项目的数据库查询报错

20、java.lang.IllegalArgumentException: invalid comparison: java.sql.Timestamp and java.lang.String

mybatis传入的日期类型参数被当作String做对比异常 item.jgsj !=''

21、ERROR: could not load library "/usr/local/pgsql/lib/postgis-3.so": /lib64/libcurl.so.4: symbol SSLv3_client_method version OPENSSL_1_1_0 not defined in file libssl.so.1.1 with link time reference

访问postgresql数据库函数报错,原因为升级过openssl至openssl-1.1.1o

以下为寻找到的解决方案:

1 、下载openssl-1.1.1l,编译:
编译openssl增加enable-ssl3与enable-ssl3-method选项

tar -zxvf openssl-1.1.1l.tar.gz
cd openssl-1.1.1l
./config shared enable-ssl3 enable-ssl3-method
make
make install

检查新编译的文件是否包含SSLv3_client_method:
[root@node1 lib64]# nm /usr/local/lib64/libssl.so.1.1 | grep SSLv3_client_method
00000000000214f0 T SSLv3_client_method
编译完成后是有SSLv3_client_method
编译好的库拷贝替换原来的libssl.so.1.1:

[root@node1 lib64]# cp /usr/local/lib64/libssl.so.1.1 /opt/software/openGauss/script/gspylib/clib/
cp: overwrite '/opt/software/openGauss/script/gspylib/clib/libssl.so.1.1'? y
[root@node1 lib64]#
检查:
[root@node1 lib64]# nm /opt/software/openGauss/script/gspylib/clib/libssl.so.1.1| grep SSLv3_client_method
00000000000214f0 T SSLv3_client_method

至此,该文件正常。

22、SQLException: The user specified as a definer ('xxx'@'%') does not exist

mysql删除了用户 xxx@% 后出现的错误,为了安全MySQL的访问需要限制ip,所以删除了次用户。

报错是因为视图定义者是xxx@%,用户被删除之后查询视图认为没有权限

修改定义者为新的用户即可

23、UnsupportedOperationException: null

异常产生于java list.addAll(); 函数

原因为此集合list来源于 Arrays.asList(); Arrays.asList()转换而来的集合并未继承allAll();函数;

可再次转换以解决:

List<String> currentQueryGuids = new ArrayList<>(list);

24、com.jcraft.jsch.JSchException: Algorithm negotiation fail

openssh升级导致,客户端和服务器端算法协商失败,这个问题其实可以添加服务端或者sftp客户端的算法类型解决

但升级的版本为ssh9.0,版本太高,添加算法也无效,最后选择降级,降级为7.5版本解决

posted @   你午睡了吗~  阅读(837)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示