JavaHome:jdk存放位置,作为一个环境变量。
ClassPath:存放类的路径,也就是说项目开发中使用到的一些类会从该目录下中找,比如 java.lang javax等包。
maven有一个本地仓库: localRespitory 本地仓库就是我们使用依赖下载存放的位置。
镜像问题:需要配置阿里云镜像,但是阿里云镜像会过期或者更新地址,注意实时更新。
找不到包问题:有时候下载到本地仓库的类会少(可能是引入依赖的版本问题),缺哪个包就从maven中找哪个包。
Maven Target文件夹: target文件夹是用来存放项目构建后的文件和目录、jar包、war包、编译的class文件,都是maven构建时生成的。
List<Integer> list = new ArrayList<>();
这就是Diamond表达式,自动做一个类型推断
属于JDK 7 的新特性,但是由于 Maven项目 使用JDK6 编译,
所以可能出现问题,需要手动引入一些依赖,不过目前版本应该已经优化过。
Cannot instantiate interface org.springframework.boot.SpringApplicationRunListener
Exception in thread "main" java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.boot.SpringApplicationRunListener : org.springframework.boot.context.event.EventPublishingRunListener
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:475)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:457)
at org.springframework.boot.SpringApplication.getRunListeners(SpringApplication.java:445)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:328)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1332)
at cn.learn.springboot1.Springboot1Application.main(Springboot1Application.java:12)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.context.event.EventPublishingRunListener]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/util/ClassUtils
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:221)
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:471)
... 6 more
Caused by: java.lang.NoClassDefFoundError: org/springframework/util/ClassUtils
at org.springframework.aop.framework.AopProxyUtils.<clinit>(AopProxyUtils.java:53)
at org.springframework.context.event.AbstractApplicationEventMulticaster.addApplicationListener(AbstractApplicationEventMulticaster.java:108)
at org.springframework.boot.context.event.EventPublishingRunListener.<init>(EventPublishingRunListener.java:64)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:208)
... 7 more
Caused by: java.lang.ClassNotFoundException: org.springframework.util.ClassUtils
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
.15 more
问题原因: 依赖引入错误,可能是导入的jar包版本不对,也可能是导入了多个版本版本冲突了,项目不知道该加载哪个jar包下的类。
Caused by: org.springframework.beans.BeanInstantiationException
我就是多引入了一个 org.springframework.beans 依赖,导致冲突。
这个完全是编码格式不同导致,idea控制台默认编码格式未GBK,但是tomcat log日志编码为UTF-8,修改conf下log.propertites编码格式即可。
Could not initialize class org.springframework.beans.factory.BeanDefinitionStoreException
不能初始化bean,根本原因是在模板引擎出的问题:
org/thmleaf/context/ 原因就是我有一个controller中没有model,但是返回的视图需要model 所以报错。
HttpMessageConverter(报文信息转换器)
将请求报文转换为Java对象。
将Java对象转换为响应报文。
我们最常用的就是使用 @ResponseBody 将Java对象转换为响应报文,然后直接作为相应response bdoy 文本传回浏览器。
当然 @ResponseBody 和 resopnse.getWriter.print(“ ”) 非常类似,其实就是将返回数据直接写入响应体中。
出现转换错误,很有可能就是返回值不是文本形式,需要将返回值写成响应体需要的文本形式。
22:28:15.601 [http-nio-8081-exec-129] WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Resolved [org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class com.atbjtu.mvc.bean.Employee]
可能是bean没有注入,有可能是只能通过id获取bean。
java.lang.NullPointerException
com.atbjtu.mvc.Controller.fileController.testUp(fileController.java:53)
@RequestMapping("/testUp")
public String testUp(MultipartFile photo, HttpSession session) throws IOException {
//获取上传的文件的文件名
**53** String fileName = photo.getOriginalFilename();
也就是photo 没有绑定上对象。
没绑定上对象的原因有很多:1、xml中配置bean错误。 2、可能form表单中出问题,比如上传文件
<form th:action="@{/testUp}" method="post" enctype="multipart/form-data">
选择文件:<input type="file" name="photo">
上传文件:<input type="submit" value="shangchuan">
form>
其实发送的是二进制文件,二进制文件放在,photo 为键的键值对中,所以
@RequestMapping("/testUp")
public String testUp(MultipartFile photo, HttpSession session) throws IOException {
controller 中要同名,否则就算初始化bean,也对应不上参数。
1、前端代码错了。
2、控制器返回的界面不存在。
3、前端界面需要model数据,但是控制器没能返回model数据。