由于项目的实时更新,需要重新打jar包重启服务,之前能正常运行,之后重新启动之后发现报错了,改了很久,发现了以下几个问题可供参考:

目录

resource路径问题

Could not resolve placeholder 'spring.redis.host' in value "${spring.redis.host}"

守护进程nohup

以后继续更新


resource路径问题

1.resource路径问题,因为本地java文件我的资源是放在src/main/resource下面

然后我在我的程序里面写的路径是:

private String indexdir="src/main/resources/engindex/engAllIndex";

相当于从当前项目开始 找到该文件路径,然后,我发现在服务器下运行,会报打开文件发生错误

打包成jar包之后,发现路径发生了改变,它会存在于和com同级的根目录下:

之前这个对象没有注入bean,是要调用方法才会创建对象的,我之前没有调用过这个方法,所以是可以正常运行的,但是现在是一开始就创建了,就在启动时报错了。

改法1,可以使用InputStream试一试,读取文件

在jar包代码中使用:InputStream inputStream = this.getClass().getResourceAsStream(path) 的写法,不管路径以是否以 / 开始,都是从jar包内部的根目录为起点。

改法2,我是将这两个文件夹放到了服务器下的与我jar包同目录下的文件

 然后将我的文件路径改成了:在jar包代码中使用相对路径,起点是jar所在目录。

private String indexdir="./chindex/chAllIndex";

于是改完之后是可以正确读到这个文件以及文件下面的内容。问题解决

Could not resolve placeholder 'spring.redis.host' in value "${spring.redis.host}"

2.springboot启动失败,提示Could not resolve placeholder 'spring.redis.host' in value "${spring.redis.host}"

嗯,它报找不到redis的host,但是我查看了我的yml配置文件:

 Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.data.redis.host' in value "${spring.data.redis.host}"说注入autowired dependencies发生错误,不能成功注入。

 然后我发现是因为我前面用的是application.properties配置文件启动的这个jar包项目,然后小组成员改动了配置文件,然后将我部分配置进行了更改,然后我重新将该application.yml文件上传到我的jar包所在的目录下,重新用application.yml来启动项目。

之前:
nohup java -jar -Dspring.config.location=./application.properties demo-0.0.1-SNAPSHOT.jar &

后来:

nohup java -jar -Dspring.config.location=./application.yml demo-0.0.1-SNAPSHOT.jar &

然后项目能正常启动了。

application.properties和application.yml文件的主要区别:

来源:application.properties和application.yml的主要区别

 

守护进程nohup

3.守护进程命令nohup

一般这种程序即使使用 & 结尾,如果终端关闭,那么程序也会被关闭。为了能够后台运行,我们需要使用nohup这个命令,比如我们有个start.sh需要在后台运行,并且希望在后台能够一直运行,那么就使用nohup。

原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。

具体命令如上面。记得添加最后面的'&'

否则会退出这条命令的时候程序也没有继续运行,你会发现明明正常启动了,但是前端发送请求的时候还是报net Err什么的错误(网络错误),然后我用ps -auf|grep java查看了进程,发现没启动,结果是因为我少加了一个符号'&',问题很小,但是找的时候找了很久,忘记输入这个符号,然后每次用快捷键运行,一直没成功运行~

以后继续更新

4.之后遇到问题再更新

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐