开发中遇到的错误处理
1 myeclipse配置的tomcat无法debug启动,报错为:
A configuration error occurred during startup. Please verify the preference field with prompt:cannot connect to VM
解决办法:管理员身份运行cmd 输入netsh winsock reset
2 设置mysql持续连接时长:set global wait_timeout=28800 ,interactive_timeout=28800;,查看:show variables like '%timeout%';
3 spring配置数据源时有四种方式(1)spring自带的数据源DriverManagerDataSource (2)dbcp (3)c3p0 (4)jndi
spring自带的数据源和dbcp可以通过加载外部的jdbc配置文件配置数据库连接 ,但是c3p0不可以,并且c3p0的jar包不只有c3p0还有mchange-commons-java.jar
4 最近在用ssm框架开发项目,但是开发过程中service层事务回滚一直回滚不了(service 类上加注解),发现原来没有引入aopalliance-1.0.jar包,然后在spring配置文件中加入
<!-- 事务 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 使用annotation定义事务-->
<tx:annotation-driven transaction-manager="txManager" proxy-target-class="true" />
5. angularJs中from表单中<input type="hidden" ng-model="id" name="id"/>这种情况下这个input的属性值传不到后台,需要修改成<input type="text" ng-hide="true" ng-model="id" name="id"/>
6. mybatis的mapper配置文件中resultMap的type如果想要设置成map类型可以这样写java.util.HashMap或者直接hashMap,不能是java.util.hashMap,会报错。
7.spring mvc 的controller层接收date类型的参数时需要在参数前加上注解@DateTimeFormat(pattern="yyyy-MM-dd")。同样,如果参数是个实体类,实体类中含有date类型的属性,那么这个实体类中的date类型的属性上也要加上这个注解。
8.float类型的数值和double类型的数值最好不要比较大小,即使一样的值比较的结果是不相等的,都转换为同样精度的的数值再进行比较
9.用的mysql数据库,某个表中的某个字段是float类型,由于使用的是mybatis,查询返回的是HashMap类型,如果该字段的值过大,查询出来的该字段的值始终是带有E的用科学计数法得出的结果,不利于直接使用,所以,修改查询返回HashMap类型,让查询返回一个自定义的<resultMap>,在这个resultMap中把这个float类型的值,映射成string类型就可以直接返回string类型
10.开发中遇到base64解密加密时如果Base64.decodeBase64(encodingAesKey(String))报错,可能是commons-codec的jar包版本过低,使用1.9或以上就可以了
11.微信企业号开发时如果遇到 异常java.security.InvalidKeyException:illegal Key Size,那么解决方案如下
在官方网站下载JCE无限制权限策略文件(JDK7的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
下载后解压,可以看到local_policy.jar和US_export_policy.jar
如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件
如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件
12.浮点型数据计算时精度丢失问题:可以转换成BigDecimal类型的进行计算,不过要注意转换成BigDecimal类型时应该用String类型例如
BigDecimal f1 = new BigDecimal("0.05");
BigDecimal f2 = BigDecimal.valueOf(0.01);
BigDecimal f3 = new BigDecimal(0.05);
System.out.println("使用String作为BigDecimal构造器参数:");
System.out.println("0.05 + 0.01 = " + f1.add(f2));
System.out.println("0.05 - 0.01 = " + f1.subtract(f2));
System.out.println("0.05 * 0.01 = " + f1.multiply(f2));
System.out.println("0.05 / 0.01 = " + f1.divide(f2));
这种形式的计算是没问题的,如果是下面这种情况,问题依然存在:
System.out.println("使用double作为BigDecimal构造器参数:");
System.out.println("0.05 + 0.01 = " + f3.add(f2));
System.out.println("0.05 - 0.01 = " + f3.subtract(f2));
System.out.println("0.05 * 0.01 = " + f3.multiply(f2));
System.out.println("0.05 / 0.01 = " + f3.divide(f2));
参考:http://www.tuicool.com/articles/nAFr6r
13.使用hibernate建表时,如果实体类中有index属性,不能建表成功(这个问题浪费我一上午)
14.nginx的conf配置文件if之后的(之间必须有空格,要不然启动不了
15.jenkins从svn拉取代码的时候,拉取的方式是在源码管理配置中的Check-out Strategy这个参数,
选择不同的配置有可能会遇到的问题是你在svn中有删除的文件,但是jenkins配置源码的地方可能有还会存在这个文件
参考:http://zhangxingnan.blog.51cto.com/3241217/1427000
16.配置spring mybatis时,mapper.xml一直加载不到,原因是mapper.xml在java包下面时不能被maven打包,解决办法是放在resource文件夹下或者
maven的pom里面build中加入resources配置,具体配置可以百度
17.mysql数据库text类型也是有长度限制的
text 65535 bytes - 64kb
mediumtext 16777215 bytes - 16Mb
longtext 4294967296 bytes - 4Gb