java超全43种常见BUG总结
1.NoSuchMethodError
1、项⽬依赖复杂。不使⽤maven管理项⽬依赖时更容易出现该问题。
处理的⽅法是: 如果使⽤maven,执⾏maven dependency:tree ⼈⼯排除
2、运⾏环境问题。⼀般java web程序都运⾏在容器中,tomcat等。如果容器中已经存在了某个版本的jar包并已经加载了某些类,⽽
web项⽬中依赖了不同的版本。
处理⽅法:保证使⽤“⼲净”的容器运⾏程序,或者在maven依赖中将容器中已经存在的依赖设置为provided
2.jsp获取不到ModelAndView的数据
Idea⾃动创建的l约束太低了,导致不能正常获取
把l约束的信息换成,下⾯的就ok
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"xmlns="java.sun/xml/ns/javaee"xsi="/2001/XML Schema-instance"schemaLocation="java.sun/xml/ns/javaee java.sun/xml/ns/javaee/web-app_2_5.xsd"></web-app>
3.400异常
参数有问题
4.解决由静态资源拦截,导致不能访问动态资源
在springmvc配置⽂件中添加
mvc:annotation-driven</mvc:annotation-driven>
mysql下载app<annotation-driven></annotation-driven>
<component-scan base-package="controller"/>
5.实现****HandlerIntercepter接⼝不实现⽅法,也不报错
jdk1.8新特性
使⽤default修饰,就是不实现也就不会报错
public interface HandlerInterceptor {
default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {
return true;
}
default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,@Nullable ModelAndView modelAndView)throws Exception {
}
default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,@Nullable Exception ex)throws Exception { }
}
l⽂件中的webapp有红线
标签有先后顺序
你写的标签没有按照约束⽂件的标签顺序
7.idea不到配置⽂件
把maven的项⽬clear⼀下
8.MyBatis访问不了数据库
必须有parameterType=“pojo.Student”
<insert id="insertStudent" parameterType="pojo.Student">
insert into springdb.student(name,age) values (#{name},#{age})
</insert>
中央调度器的通配符问题
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
10.springmvc会根据你的访问请求后缀名,判断你是不是静态资源
11.解决tomcat访问html中⽂乱码
在html总添加
<meta http-equiv="Content-Type"content="text/html; charset=UTF-8"/>
12.Maven引⽤依赖报错
点击4:30左右
13.Centos安装时候,不能联⽹
检查者俩个⽹络是否启动
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-k7TFBQV2-1598026740659)(D:\1workeFiles\运⾏⽂件\有道云笔记\qq78DD6D55826D645CB39BD6FE390A4558\136658c507814e9e90ad16d318bf30d4\clipboard.png)]
14.linux运⾏sql⽂件错误
是因为linux下MySQL版本不兼容导致的
把⽂件中的所有的utf8mb4_0900_ai_ci替换为utf8_general_ci 以及utf8mb4替换为utf8
15.linux显⽰中⽂乱码
修改 /f⽂件内容为
LANG=“zh_CN.UTF-8”
让修改的⽂件⽴即⽣效
source /f
16.java.lang.StackOverflowError
由于死递归造成的
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
HttpSession session = Session();
Object stuNum = Attribute("stuNum");
if(stuNum==null){
request.setAttribute("msg","没有权限");
try{
System.out.println("异常");
}
return false;
}else{
return true;
}
}
@Configuration
public class MyConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry){
registry.addViewController("/").setViewName("index");
registry.addViewController("/index").setViewName("index");
registry.addViewController("/success").setViewName("success");
}
@Override
public void addInterceptors(InterceptorRegistry registry){//这⾥⼜把index拦截
- InterceptorRegistration interceptorRegistration = registry.addInterceptor(new MyInterceptor());
interceptorRegistration.addPathPatterns("/**");//拦截哪些请求
}
17.不到mapper
告诉他l在哪⾥
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
18-MVC异常
public String myExceptionHandler(Exception e)这⾥⾯的参数只能填写异常参数
@ControllerAdvice//相当于@Controller,注册到容器中
public class MyExceptionHandler {
@ExceptionHandler(Exception.class)//相当于@RequestMapping,拦截哪个异常。
public String myExceptionHandler(Exception e){//只能填写⼀个异常参数
return"error/404";
}
}
19-docker启动错误
查看是否是/etc/sysconfig/docker 配置⽂件有内容错误
20.安装Mysql容器出错
重启Docker后在重启Mysql容器
systemctl restart docker docker start mysql
21-Thymeleaf渲染失败
得经过Controller的调⽤才能执⾏渲染
22.CryptoException
这个是Shiro的remberme的错误。
每次重启都会重新⽣成⼀对密钥
第⼀次启动程序shiro使⽤A密钥加密了cookie,第⼆次启动程序shiro重新⽣成了密钥B,当⽤户访问页⾯时,shiro会⽤密钥B去解密上⼀次⽤密钥A加密的cookie,导致解密失败
解决办法
⾃⼰定义⼀个秘钥
@Bean
public CookieRememberMeManager cookieRememberMeManager(){
CookieRememberMeManager cookieRememberMeManager =new CookieRememberMeManager();
SimpleCookie simpleCookie =new SimpleCookie("rememberMe");
simpleCookie.setMaxAge(259200000);
cookieRememberMeManager.setCookie(simpleCookie);
cookieRememberMeManager.setCipherKey(Base64.decode("6ZmI6I2j5Y+R5aSn5ZOlAA=="));
return cookieRememberMeManager;
}
characterEncoding=utf-8
指定编码⽅式
spring:
datasource:
url: jdbc:mysql://118.190.247.115:3306/answer?characterEncoding=utf-8
username: root
password: HJC916924
24.linux启动SpringBoot报错注⼊bean失败
没有添加mysql驱动(不是说导⼊mybatis框架会⾃动导⼊吗,怎么还得在导⼊⼀下我靠)
<dependency>
<groupId&batis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
25.docker启动镜像报错
使⽤ root 权限登录 Centos。确保 yum 包更新到最新。
更新⼀下yum就好了
sudo yum update
错误信息
Error response from daemon: oci runtime error: :247: starting container process
26.前端插⼊数据,数据库乱码
url添加UTF-8编码
url: jdbc:mysql://39.106.82.217:3306/our_web?useUnicode=true&characterEncoding=UTF-8
**27.**报错ptions.TemplateInputException: Error resolving template解决⽅案
后台不能返回Map的json数据,返回list可以
28.Ajax中,跳转url的时候,不是⾃⼰设置的
1.ajax中设置的href要以/开始
否则路径会解析出错
$.ajax({
url:"/selectCreateClass",
dataType:"json",
success:function(data){
// alert(data)
$("#cClass").html("");
$.each(data,function(i,n){
$("#cClass").append(
"<dd><a href='/file/"+no+"/"+name+"' class='uploadFile'>"+name+"</a></dd>");
})
}
})
在href中以 / 开头了
"<dd><a href='/file/"+no+"/"+name+"'class='uploadFile'>"+name+"</a></dd>"
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-Tt0q7gLf-1598026740661)(D:\1workeFiles\运⾏⽂件\有道云笔记\qq78DD6D55826D645CB39BD6FE390A4558\4b13d9591f3843a0b95d502623058e19\clipboard.png)]
没有以 / 开头
"<dd><a href='/file/"+no+"/"+name+"'class='uploadFile'>"+name+"</a></dd>"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论