zoukankan      html  css  js  c++  java
  • 关于"user.dir"的认识

    最近阅读了一些tomcat源码,看到tomcat在读取jar包外配置文件,是将“user.dir”的路径作为home path文件即

    通过System.getProperty("user.dir")找到相关配置。然后自己做了一些尝试,发现在eclipse执行的时候,

    这个user.dir指向工程目录下,貌似是想要的结果,但是继续试验发现,当用于一个windows services

    来启动这个jar包的时候,发现没有按照预期的方式将日志写在jar包同目录下打印出来,

    十分困惑,后来进一步查看tomcat相关源码,注意到在commons-daemon(c++)源码中,启动jar包前,使用了SetCurrentDirectoryW(SO_STARTPATH)设定了当前exe所在的路径为当前的工作目录,这就是问题点,

    设定以后jar包内获取的"user.dir",就为当前的exe所在路径(jar包和exe放在同一个路径下)。

    查阅了一些关于"user.dir"的资料,有如下等解释:
    1. "user.dir":User's current working directory  (官方) 其实不太好理解

    2. 就是运行dos命令的那个目录:
    例如:
    C:Documents and Settingsuser>java xxx

    就是指的C:Documents and Settingsuser这个目录
    (在哪里java <yourClass> 哪里就是你的working directory.)

    3. 用户当前程序运行的路径(用户当前工作目录)

    这个有点豁然开朗的感觉,想想看,执行service的时候,其实已经有了当前的运行程序的路径,而不是exe具体执行的路径

    进过测试打印是这个路径:   C:Windows

    所以需要通过SetCurrentDirectory重新设定一下。

     

     

  • 相关阅读:
    linq查询结果指定列的两种方式
    MVC HTML辅助类常用方法记录
    如何获取google地图、baidu百度地图的坐标
    js解析Json字符串的方法
    EF 官方API
    sqlserver 计算 百分比
    js 判断js函数、变量是否存在
    JS 去字符串空格 总结
    sql 转换日期格式 只保留月份和日期
    C# json object互转工具
  • 原文地址:https://www.cnblogs.com/tyoyi/p/4269470.html
Copyright © 2011-2022 走看看