【问题标题】:When I launch my java application, can I get the path on my linux console?当我启动我的 java 应用程序时,我可以在我的 linux 控制台上获取路径吗?
【发布时间】:2012-05-01 09:46:41
【问题描述】:

当我从命令行启动 Java 应用程序时,我想知道在调用脚本之前控制台在文件系统中的位置。我基本上想从Java应用程序中知道我的密码,这可能吗?我在 System.getProperty("") 中看不到任何内容。 user.dir 属性不起作用,它只是为我提供了 .project 文件在 Eclipse 项目中的位置。

我可以使用 os.getcwd() 在我的 python 脚本中获得正确的路径,但我还不知道如何将该路径输入到我的 Java 程序中。

【问题讨论】:

  • 这被称为当前工作目录,而不是路径。路径通常是指称为 PATH 的环境变量,它是搜索可执行文件或库的目录列表。您可以说“cwd 的路径”,但这是多余的。

标签: java linux path


【解决方案1】:

试试这个:

  File f = new File(".");
    f.getCanonicalPath(); // returns the path you are looking for

你也可以使用:

System.getProperty("user.dir")

以下问题的一些很好的答案可能会有所帮助: Get the application's path

【讨论】:

  • 如果运行它的用户在 PWD 中没有读/写访问权限,这不会造成问题吗?我知道“。”会存在,但在某些特殊情况下,我认为这可能是个问题?
  • 不,创建“文件”对象不会打开或创建文件。
【解决方案2】:

试试这个:

CodeSource cs = getClass().getProtectionDomain().getCodeSource();

然后cs.getLocation();

那将是你执行时的 PWD。​​p>

ED: CodeSource 是这个库的一部分:import java.security.CodeSource;

【讨论】:

    【解决方案3】:

    我通常用这个:

    System.out.println(getClass().getClassLoader().getResource(".")
                    .getPath());
    

    返回的结果与@kevingreen 建议的结果相同

    【讨论】:

    • 我想你的更干净,它不涉及另一个导入。
    • 好吧,@kevingreen System.out.println(getClass().getProtectionDomain().getCodeSource() .getLocation().getPath());也不涉及任何导入;-) 我从你那里学到了一些新东西,谢谢!
    【解决方案4】:

    试试这个:

    System.getProperty("user.home")
    

    【讨论】:

    • 这只会获取运行应用程序的用户帐户的主目录。不是运行应用程序的 PWD。​​span>
    猜你喜欢
    • 2014-04-09
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    相关资源
    最近更新 更多