V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
NASK
V2EX  ›  程序员

把 SpringBoot 项目开发环境从 Windows 迁移到 macOS 遇到的文件保存路径问题

  •  
  •   NASK · 43 天前 · 1396 次点击
    这是一个创建于 43 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前开发一直使用的 Windows ,服务器使用的 Linux Docker Tomcat 容器 war 包部署。没有使用对象存储,代码中文件保存逻辑针对 Windows 和 Linux 系统进行判断写了两套逻辑。最近换了 macOS ,不想再写一套 macOS 的逻辑了,想直接让 SpingBoot 的项目在本地 Docker 容器运行调试,这种方法可行吗?麻烦万能的 v 友给一个思路。
    12 条回复    2025-03-05 10:56:23 +08:00
    jackshen
        1
    jackshen  
       43 天前
    代码贴一下?或者报错信息贴一下?感觉你这个情况在 macos 装一个 window 虚拟机,在虚拟机里开发可能会更简单
    SmallZheng
        2
    SmallZheng  
       43 天前
    基本上可以,macOS 的 docker 也是基于 Linux 的
    hippieZhou
        3
    hippieZhou  
       43 天前 via iPhone
    可以通过 docker 来挂载外部文件系统的方式解决么,通过 docker 来隔离不同系统的文件系统差异,对应用程序而言隐藏这些差异
    oneisall8955
        4
    oneisall8955  
       43 天前
    常用文件工具都封装好了吧,什么错?
    NASK
        5
    NASK  
    OP
       43 天前
    @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");
    }这种
    NASK
        6
    NASK  
    OP
       43 天前
    @oneisall8955
    没报错,我目前加了一个 CommonUtil.isMacOS()的逻辑,但是感觉太麻烦了,需要修改多处代码。想试着在本地容器跑,这样就不用加 CommonUtil.isMacOS()的判断了。war 包直接映射到 tomcat 容器,调试用 tomcat remote 。
    sagaxu
        7
    sagaxu  
       43 天前
    @NASK 临时目录难道不应该读 java.io.tmpdir 属性吗?这东西就不应该写死在代码中。
    NASK
        8
    NASK  
    OP
       43 天前 via iPhone
    @sagaxu 这个项目也有一年多了,我是最近参与的,难受的是这种硬编码在这个项目里还有很多😇
    monmon
        9
    monmon  
       43 天前   ❤️ 1
    一年多的项目就别屎上堆屎了,ctrl+shift+F `CommonUtil.isWindows()` 这种代码一般不会超过 100 处,抽到配置文件区分一下环境,几分钟顺手就改改了,大家都舒服。
    conn4575
        10
    conn4575  
       42 天前 via Android
    你的文件应该都是按某种目录结构保存在某个根路径下,只需要定义根路径的位置,其他目录都使用相对路径就行了,相对路径的写法三个系统都是通用的。
    zhady009
        11
    zhady009  
       42 天前 via iPhone
    Path 本来就 3 个平台都支持不需要做什么,除非你自己写死
    jackshen
        12
    jackshen  
       42 天前   ❤️ 1
    @NASK #5 这个方法了解一下? java.io.File#createTempFile(java.lang.String, java.lang.String)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   946 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:04 · PVG 04:04 · LAX 13:04 · JFK 16:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.