不知道大家有没有遇到这种情况:在windows环境下项目启动的好好的,可是部署到生产的时候就会报错,找不到相关文件。刚好今天我就遇到了这种情况,真的是头疼屎了,为了让自己对这次bug加深一下印象,所以就写个笔记记录下来。
首先,项目在本地是可以启动的,而部署到Linux系统的时候启动不起来了,报找不到文件的bug,我是可以确定文件是正常的,没有破损的,那导致出问题的原因,可能就是路径错误了,因为路径不对,所以加载不了相关的文件。
今天百度了好多,恶补了一下Linux和Windows下路径的不同。
1,首先,windows下面拼接路径支持反斜杠和正斜杠,但是Linux中拼接路路径不支持反斜杠的写法。即windows下面可以这样写:String path = “src\\main\\resources\\apiclient_key.pem” 或 String path = “src/main/resources/apiclient_key.pem”。但是在Linux中就不支持第一种写法
2,windows下面(即idea中)加载路径可以根据相对路径也可以根据绝对路径,但是Linux系统下加载资源只能是绝对路径,即“/”。因为我们的项目一旦打包成jar,就类似于一个压缩包一样,不能以某一个点为坐标相对的去找文件,只能以这个项目的根目录去加载文件/资源。