2010-12-14 106 views
13

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

+0

不知道这是重复的,但可以帮助http://stackoverflow.com/questions/840190/changing-the-current-working-directory-in-java – khachik 2010-12-14 18:30:36

+0

是的,这可能会有所帮助。新的文件(父,路径)可能工作。我将不得不尝试。我发布这个问题的原因是我试图在应用程序加载的dll上使用分析器。由于我必须基本上配置java.exe,所以当前工作目录被设置为我的jdk文件夹,并在我的应用程序中抛出我的相对路径。 – user538442 2010-12-14 18:33:10

+0

你的分析器应该有一个选项来设置起始目录。或者也许可以写一个BAT文件并告诉profiler运行它? – 2010-12-14 18:54:00

回答

0

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

+0

我正在使用JNI,所以这可能是一个可能的解决方案。 – user538442 2010-12-14 18:35:05

+0

这会使你的代码完全不可移植,当然。 – 2010-12-15 03:31:15

3

如果这一切成为可能,我宁愿使用脚本来运行Java应用程序和设置目录中的脚本:

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

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

33

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

0

我发现这个SO帖子,它帮助我解决了我的问题。尽管我想分享一些关于IntelliJ的具体内容,可能会让其他人感兴趣。

我已经发布以下其中-Duser.dir标志使用,也工作目录文本字段填写一张图片。

"Working Directory" field has lower precedence than the -Duser.dir flag.

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