开发中遇到的问题及解决办法

 

1、创建maven项目报出:Dynamic Web Module 3.0 requires Java 1.6 or newer.错误

解决思路:出现此问题一般是jdk版本的问题,maven 2.1默认用jdk 1.3来编译,maven 3 用jdk 1.5,如果要用其他版本需要compiler插件指定

解决办法:在pom.xml中加入下面这段

  

 <build>
      <plugins>  
        <plugin>  
            <groupId>org.apache.maven.plugins</groupId>  
            <artifactId>maven-compiler-plugin</artifactId>  
            <version>3.1</version>  
            <configuration>  
                <source>1.7</source>  
                <target>1.7</target>  
            </configuration>  
        </plugin>  
    </plugins>  
  </build>

然后项目右键->Maven->Update project configuration,ok解决

2、从oracle数据库中查询数字的时候,出现“.1”和“40.”问题

问题描述:1)查询数字为0.1的时候,查询结果为.1

              2)查询数字为40的时候,查询结果为40.(这个是在解决.1的时候出现的问题)

解决思路:解决1)的方法为:to_char(0.1,'FM9999999990.99')。其中FM是将结果0.10->0.1

     但是在解决了1)的时候又会出现to_char(40,'FM9999999990.99')=40. 的问题,用rtrim('40.','.')=40将‘.’去掉

所以最终的解决方案为:rtrim(to_char(num,'FM9999999990.99'),'.')

3、在eclipse中进行开发时,经常会遇到切换jre版本问题

解决办法:1)添加jre版本到eclipse

2)项目右键->Properties->Java Build Path->libraries->Add Library->Alternate JRE进行更换jre版本

4、linux 下执行.sh文件总是提示permission denied

如果你是root登陆的话(不是的话,切换到root用户,对*.sh赋可执行的权限)
chmod 777 *.sh

 or

chomd +x file.sh

然后运行就OK了

5、关于web项目中乱码的问题

 1)form表单post的提交不会出现乱码

 2)get方式提交url会出现乱码

解决办法:url在js中处理一下

var requestUrl = "/login.action?userName="张三";
requestUrl=encodeURI(requestUrl);
requestUrl=encodeURI(requestUrl);//注意这里必须要处理两遍,不然tomcat会解码一次,相当于没编码

在action中解码

String userName = request.getParameter("userName");
userName = URLDecoder.decode(userName, "UTF-8"); 

 6、修改mysql密码,新密码没有生效

问题分析:出现此问题的原因是没有刷新权限

解决办法:

  1) 修改密码后重启数据库

 2) 修改密码后刷一下权限:Flush privileges

附-修改密码:

  1)sql语句修改

UPDATE user SET password=PASSWORD('新密码') WHERE user='用户名';
FLUSH PRIVILEGES;


或者
SET PASSWORD FOR root=PASSWORD('123456');

   2)命令行修改

mysqladmin -u USER -pOLDPASSWORD password PASSWORD

7、移植数据库后出现[Err] 1449 - The user specified as a definer ('admin'@'localhost') does not exist错误

问题描述:用软件将本地数据及结构导出数据库脚本,在另外一台上面执行相应的数据库脚本,当运行程序插入或者触发事件时报错:[Err] 1449 - The user specified as a definer ('admin'@'localhost') does not exist

解决思路:出现这个问题是因为另外一台电脑没有admin用户(每次用软件新建连接时相当于新建用户)

解决办法:

 1)

grant all privileges on *.* to admin@"%" identified by ".";
flush privileges;

   2)将之前导出的脚本中关于admin的换成另外一台机器上的用户,让后再执行数据库脚本

   3)更新数据库的definer

UPDATE mysql.proc SET definer='root@localhost' WHERE definer = '*admin*@localhost';
UPDATE mysql.event SET definer='root@localhost' WHERE definer = '*admin*@localhost';

 8、java中用double损失精度的问题,出现0.0000**1偏差

问题描述:double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1。经常会因为精度丢失而导致程序处理流程出错。  
              所以一般对double类型进行运算时,做好对结果进行处理,然后拿这个值去做其他事情。  

解决思路:使用之前进行处理

解决办法:

  1)java中

 /**   
     * 对double数据进行取精度.   
     * @param value  double数据.   
     * @param scale  精度位数(保留的小数位数).   
     * @param roundingMode  精度取值方式.   
     * @return 精度计算后的数据.   
     */   
    public static double round(double value, int scale,  
             int roundingMode) {    
        BigDecimal bd = new BigDecimal(value);    
        bd = bd.setScale(scale, roundingMode);    
        double d = bd.doubleValue();    
        bd = null;    
        return d;    
    }    


     /**  
     * double 相加  
     * @param d1  
     * @param d2  
     * @return  
     */  
    public static double sum(double d1,double d2){  
        BigDecimal bd1 = new BigDecimal(Double.toString(d1));  
        BigDecimal bd2 = new BigDecimal(Double.toString(d2));  
        return bd1.add(bd2).doubleValue();  
    }  


    /**  
     * double 相减  
     * @param d1  
     * @param d2  
     * @return  
     */  
    public static double sub(double d1,double d2){  
        BigDecimal bd1 = new BigDecimal(Double.toString(d1));  
        BigDecimal bd2 = new BigDecimal(Double.toString(d2));  
        return bd1.subtract(bd2).doubleValue();  
    }  

    /**  
     * double 乘法  
     * @param d1  
     * @param d2  
     * @return  
     */  
    public static double mul(double d1,double d2){  
        BigDecimal bd1 = new BigDecimal(Double.toString(d1));  
        BigDecimal bd2 = new BigDecimal(Double.toString(d2));  
        return bd1.multiply(bd2).doubleValue();  
    }  


    /**  
     * double 除法  
     * @param d1  
     * @param d2  
     * @param scale 四舍五入 小数点位数  
     * @return  
     */  
    public static double div(double d1,double d2,int scale){  
        //  当然在此之前,你要判断分母是否为0,    
        //  为0你可以根据实际需求做相应的处理  

        BigDecimal bd1 = new BigDecimal(Double.toString(d1));  
        BigDecimal bd2 = new BigDecimal(Double.toString(d2));  
        return bd1.divide  
               (bd2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();  
    }  

   2)js中四舍五入  

小数点问题  
Math.round(doubleNumber*100)/100 (保留 2 位)  

function formatFloat(src, pos)  
{  
  return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos);  
}  

 9、解决sublime text3   ctrl+shift+p 报“package control there are no packages available for installation”错误

这个问题的原因因该是网站证书的原因吧!

我们要想正常使用Package Control来安装插件的话,我们可以将浏览器检查证书的地方给勾掉。

原文地址:https://www.cnblogs.com/tombsky/p/3922202.html