这篇blog作为自己以后使用方便创建,分类整理一路上遇到的各种bug,如果以后遇到相同或相似的问题,有据可查。由于有比较多的bug之前未来得及整理,所以这里记录的可能仅仅只是一小部分bug,或者还包含开始的一些很初级的bug,但是随着时间的延长,这篇blog会越来越长,以后遇到难以处理的bug,一律在此登记。
maven
1.不清楚maven的项目结构,配置文件没有放置在resource文件夹下导致报错。
2.使用IDEA的命令行操作maven命令,控制台打印信息出现中文乱码,需修改IDEA的相关配置:在setting中的maven设置的runner中VM Options填入“-Dfile.encoding=UTF-8”,然后重启IDEA。
3.maven项目出现GBK编码错误。
解决方案:pom文件中配置插件,如下,
<!-- 指明编译源代码时使用的字符编码,maven编译的时候默认使用的GBK编码, 通过project.build.sourceEncoding属性设置字符编码,告诉maven这个项目使用UTF-8来编译 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
或者添加插件
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<!-- 指明编译源代码时使用的字符编码,maven编译的时候默认使用的GBK编码,通过encoding属性设置字符编码,告诉maven这个项目使用UTF-8来编译 -->
<encoding>utf8</encoding>
</configuration>
</plugin>
4.使用上述插件可能会遇到报错:-source 1.5 中不支持 diamond 运算符 [ERROR] (请使用 -source 7 或更高版本以启用 diamond 运算符)
所以需要修改如下。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
5.pom文件中的<packaging>
标签,如果参数为jar或war是可以正常打出对应的包的,但如果为pom的话,使用mvn install命令会打出一个聚合包,是将所有的子模块(Module)打成一个包。
Mysql
1.使用Navicat远程连接数据库报错2003,防火墙或安全组问题,需要检查远程连接的端口是否开启,防火墙规则以及安全组规则是否允许该端口远程连接。
2.Linux下启动mysql出现报错信息:ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists;
查找错误日志:unknown variable ‘thread_concurrency=8’;修改配置文件my.cnf,注释该行。
3.连接数据库时,总会出现一条关于SSL的警告信息,对于程序运行没有影响,如果想要消除,需要在连接池配置中的url属性加上“useSSL=false”。
4.使用中文关键字查询的时候查询不到想要的结果,经查询,是由于中文乱码问题,解决办法是在连接池配置中的url属性加上“characterEncoding=utf-8”。
5.在url属性添加多条限制的时候使用“&”不奏效怎么办,使用“&”。
ps:关于如何在网页上显示“&”,因为html会直接转义为“&”,那么我们在书写时就需要这样书写“&amp;”。而我在打最后的字符串时,其实又多了一层嵌套。2333.
6.报错:Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
因为连接池的关系;简单说,连接池一直在等着被使用,但是没人用,然后mysql就给关了,但是连接池又调用了,所以就报错了。
解决办法,修改等待时间
#vim /etc/my.cnf
[mysqld] wait_timeout=604800
jsp
1.jsp文件里的EL表达式取不出值
问题原因:
这个标签会忽略掉EL表达式(EL(ExpressionLanguage)目的:为了使JSP写起来更加简单。)
解决方案有两种:
1).将标签去掉,没问题了就
2).在jsp页面头加:<%@page isELIgnored=”false”%> 问题得以解决。
原因是<%@page isELIgnored=”false”%>的优先级高于web-app。
2.jsp页面的路径问题:有的时候使用web容器启动项目的时候,会出现直接用url访问不到的情况,这在jsp页面跳转的时候就是一个问题。
所以这里需要使用绝对路径${pageContext.request.contextPath}
,它可以获取到需要的项目名称,可以解决相关问题,一般涉及到跳转问题,都要加上这个绝对路径,除非是需要相对路径的时候不需要加它。
Spring及SpringMVC
1.关于Spring命名规范问题
如果写为xsi:schemalocation
,然后出现报错
原因是Spring严格的命名规范,这里注意大小写。
2.SpringMVC的重定向问题:redirect重定向的问题,这里对于重定向的书写,return "redirect:/stus";
一定要写/
,不然就会出现拼接URL的现象。
3.对应的jsp页面里,form表单的action动作需要和方法的url对应,不然会报错。
4.Spring的bean和new不可混用,否则,new出来的东西会导致Spring的bean失效,无法自动装配,这个其实大概思考一下就理解了,不过这个错误偶尔还是会不注意。
spring boot
1.新手常见错误就是bean使用@Autowired注入失败的问题。
解决方案:需要注意的是,spring boot是从启动类(带有@SpringBootApplication的那个类)的所在包开始,向下扫描。也就是说你的bean文件是要在启动类所在包或其子包下才会被扫描到。参考
2.@RestController和@Controller的区别
解决方案:@RestController相当于@Controller+@ResponseBody;所以当我们如果在spring boot中使用jsp的时候,使用的应该是@Controller;而直接传输json的时候,使用@RestController更方便。
3.使用jpa时,定义实体类的时候,使用了hibernate框架,在自增id的处理上有问题,报错如下:
ERROR:could not read a hi value
com.mysql.jdbc.exceptions.jdbc.MySQLSyntaxErrorException: Table ‘项目名称.hibernate_sequence’ doesn’t exist
解决方案:以为自动生成的注解问题,将@GeneratedValue
修改为@GeneratedValue(strategy = GenerationType.IDENTITY)
.
问题解释链接
svn
1.svn更新报错:
Skipped 'xxx' -- Node remains in conflict
解决办法:
svn remove --force filename
svn resolve --accept=working filename
然后再更新即可。
IDEA
1.webapp文件无法识别
解决办法:在Project Structure —> Facts中的Web Resource Directories中设置路径为自定义webapp的路径。参考
先整理到这,继续写别的,过段时间再继续更新