【问题标题】:Can you set the current running directory from the java command line?你可以从java命令行设置当前运行目录吗?
【发布时间】:2011-05-25 11:18:10
【问题描述】:

我正在从命令行运行 Java 应用程序。我可以指定一个命令行参数来将当前运行目录设置为应用程序实际运行位置以外的位置吗?

【问题讨论】:

  • 不确定这是不是重复的,但可以提供帮助stackoverflow.com/questions/840190/…
  • 是的,这可能会有所帮助。 new File(parent, path) 可能会起作用。我得试试看。我发布这个问题的原因是我试图在我的应用程序加载的 dll 上使用分析器。由于我必须从本质上分析 java.exe,因此当前工作目录被设置为我的 jdk 文件夹并在我的应用程序中抛出我的相对路径。
  • 您的分析器应该有一个设置起始目录的选项。或者也许可以编写一个 BAT 文件并告诉 profiler 运行它?
  • 可以,但是无论出于何种原因,当我设置它时应用程序都不会运行

标签: java command-line working-directory


【解决方案1】:

有一个JVM参数-Duser.dir可以用来设置JVM的工作目录。

【讨论】:

    【解决方案2】:

    如果可能的话,我宁愿使用脚本来运行 java 应用程序并在脚本中设置目录:

    #!/bin/sh
    cd <your dir>
    java <some arguments>
    

    JNI 解决方案可能会影响应用程序中的各种相对路径;例如你输入的类路径。

    【讨论】:

      【解决方案3】:

      如果要更改当前目录,则必须使用 JNI 并从 Java 代码调用本机 API。例如,对于 Windows,您可以使用 SetCurrentDirectory

      【讨论】:

      • 我正在使用 JNI,所以这可能是一个可能的解决方案。
      • 当然,这会使您的代码完全不可移植。
      【解决方案4】:

      我发现了这篇 SO 帖子,它帮助我解决了我的问题。虽然我想分享一些关于 IntelliJ 的具体内容,可能会绊倒其他人。

      我在下面发布了一张图片,其中使用了 -Duser.dir 标志,并且还填写了工作目录文本字段。

      在这种情况下,工作目录将设置为“JarLearning”而不是“2ndTry”。

      【讨论】:

        猜你喜欢
        • 2011-03-07
        • 2014-04-16
        • 1970-01-01
        • 1970-01-01
        • 2019-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多