之前开发一直使用的 Windows ,服务器使用的 Linux Docker Tomcat 容器 war 包部署。没有使用对象存储,代码中文件保存逻辑针对 Windows 和 Linux 系统进行判断写了两套逻辑。最近换了 macOS ,不想再写一套 macOS 的逻辑了,想直接让 SpingBoot 的项目在本地 Docker 容器运行调试,这种方法可行吗?麻烦万能的 v 友给一个思路。
1
jackshen Mar 4, 2025
代码贴一下?或者报错信息贴一下?感觉你这个情况在 macos 装一个 window 虚拟机,在虚拟机里开发可能会更简单
|
2
SmallZheng Mar 4, 2025
基本上可以,macOS 的 docker 也是基于 Linux 的
|
3
hippieZhou Mar 4, 2025 via iPhone
可以通过 docker 来挂载外部文件系统的方式解决么,通过 docker 来隔离不同系统的文件系统差异,对应用程序而言隐藏这些差异
|
4
itechify PRO 常用文件工具都封装好了吧,什么错?
|
5
NASK OP @jackshen
if (CommonUtil.isWindows()){ tempPath = Constants.STATIC_PATH + "/systemfile/" + XXX_SERVER + "/"; } if (CommonUtil.isLinux()){ tempPath = "/software/resources/config/" + XXX_SERVER + "/"; } 代码里很多这种,我不想再写一个 CommonUtil.isMacOS()了,判断系统类型用的是 public static boolean isWindows() { return System.getProperty("os.name").toLowerCase().contains("windows"); }这种 |
6
NASK OP @oneisall8955
没报错,我目前加了一个 CommonUtil.isMacOS()的逻辑,但是感觉太麻烦了,需要修改多处代码。想试着在本地容器跑,这样就不用加 CommonUtil.isMacOS()的判断了。war 包直接映射到 tomcat 容器,调试用 tomcat remote 。 |
9
monmon Mar 5, 2025 一年多的项目就别屎上堆屎了,ctrl+shift+F `CommonUtil.isWindows()` 这种代码一般不会超过 100 处,抽到配置文件区分一下环境,几分钟顺手就改改了,大家都舒服。
|
10
conn4575 Mar 5, 2025 via Android
你的文件应该都是按某种目录结构保存在某个根路径下,只需要定义根路径的位置,其他目录都使用相对路径就行了,相对路径的写法三个系统都是通用的。
|
11
zhady009 Mar 5, 2025 via iPhone
Path 本来就 3 个平台都支持不需要做什么,除非你自己写死
|