Spring 的一些技巧(1)
添加文件头注释

/**
- @Author ${USER}
- @create
{TIME}
*/
端口被占用
Web server failed to start. Port 5088 was already in use.

使用cmd命令查看端口号占用情况,例如查看端口 5088,可以看出进程号为10944;
netstat -ano | findstr 端口号

关闭该进程
mac上是
lsof -i :端口号

方法一:使用任务管理器关闭:
菜单栏 -> 右键 - > 任务管理器 -> 详细信息,根据PID排序找到PID为10944的进程,选择后点击结束任务。

方法二: 使用命令关闭
命令:
taskkill -PID 进程号 -F


mac上杀死进程命令为:
kill -9 进程号
springboot错误: 找不到或无法加载主类
cd 项目根目录,执行命令进行编译
mvn clean install
Optional int parameter 'xx' is present but cannot be translated into a null value
Optional int parameter 'page' is present but cannot be translated into a null valuedue to being declared as a primitive type. Consider declaring it as object wrapper for the corresponding primitive type.
这句话解释了错误原因:page值可能为空
解决方法:可以用包装类,int的包装类为Integer ,int的默认值为0,若想能够接受NULL的值,将int换成integer即可解决
@RequestParam(value = "page", required = false) Integer page
问题解决。
乱码错误
之前建立项目是utf8,但是不知道怎么操作的application.yml有一次变成乱码,于是用GBK重载,注释的中文恢复了,但是执行代码发现报错
Caused by: org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input l
其实应该是文件的格式问题造成的解析错误,改变改文件的解析格式为utf8,或者新建一个application.yml文件覆盖,里面乱码的中文,重新输入即可。
SpringBoot 获取jar包所在目录路径
有时候我们非常需要获取当前运行的jar包的路径,Spring提供了一个ApplicationHome 用于简化这个操作。代码如下:
package me.kagura;
import org.springframework.boot.system.ApplicationHome;
public class Test {
public static void main(String[] args) {
ApplicationHome applicationHome = new ApplicationHome();
//C:\Users\Administrator\IdeaProjects\demo\ 项目运行jar所在目录
System.err.println(applicationHome.getDir().getAbsolutePath());
//C:\Users\Administrator\IdeaProjects\demo\Test.jar 项目运行jar所在目录
System.err.println(applicationHome.getSource().getAbsolutePath());
}
}
Caused by: java.lang.IllegalStateException: Failed to introspect Class from ClassLoader Caused by: java.lang.ClassNotFoundException: javax.servlet.Filter

