Spring boot 项目调试报错:'/data' could not be created
前言
项目需要添加一项新的渠道服务商,活安排给我了。没有接触过核心的业务,所以对于需要修改的地方不太懂。跟之前的同事确认了一下,明白自己需要完成的部分代码的位置。
之后 copy 之前的一个渠道服务商的写法,把主要的一些需要自定义的 bean 定义好替换上去。之后再根据接口文档要求,对请求主体加密,以及修改一些响应的处理。主要的脉络流程跟之前的渠道服务商是一致的。
完成之后,想要本地调试一下请求接口,结果提示一个外部引入的依赖包里定义的 bean 不存在,有错误。按照同事的提醒,maven 清理更新之后再运行没用。想了一下,可能因为是公司自己维护的项目(nexus),所以版本号一致没变,从而导致 maven 在更新时不会更新到本地 maven 库。所以我把对应的 jar 删除后再点击 maven 更新,然后就好了。
之后运行报错:'/data' could not be created
。这个错误位于 pdf 操作工具类中,对应的设备配置项就是一个字体文件地址,恰好是 /data/xxx.otf
。据同事说,windows 和 linux 上运行都没有问题,猜测可能是目录不存在,创建没有权限。查看 Mac 根目录,确实没有 /data
目录。尝试创建 mkdir /data
报错:mkdir: /data: Read-only file system
。所以问题变成了如何解决目录创建的问题。
解决
也想过修改项目配置,将文件夹改成其他存在的目录。但部署到 linux 就不一定存在了,且修改不确定是否会有报错,或者其他问题。所以,唯一可行的途径就是 Mac 下创建 /data
目录。
百度到 AI 智能回答:
按照步骤重新挂载根目录,然后提示磁盘空间不够,清理到 50 多个 G 还是不行,也就说这个方法不适合我的情况。
之后搜索到一篇教程 mac Apple M1 在根目录无法创建文件和文件夹 mkdir: /data : Read-only file system,测试可行。
以下是主要步骤:
- 在家目录创建 ~/data,准备引用连接到 /data 目录
mkdir /Users/xxx/data
sudo vim /etc/synthetic.conf
# 添加一行,空白部分要使用 tab 分隔
data /Users/xxx/data
- 重启开机进入 Recovery 模式,关闭SIP
Inter : Command+R
Apple M1 : 启动长按电源键, 直到出现 “选项” 界面
在 recovery 模式下打开 terminal, 关闭 SIP
# 关闭
csrutil disable
# 查看状态
csrutil status
再选择重新启动后, 正常启动根目录会出现 /data
。
此时 ll 可以看到 data 是一个指向 /Users/xxx/data
目录的 Symbol(相当于软链 ln -s
)。