如何在Java程序中更改当前工作目录?我能找到的关于这个问题的一切声称你根本做不到,但我不相信那是真的.
我有一段代码,它使用来自通常启动的目录的硬编码相对文件路径打开文件,我只是希望能够在不同的Java程序中使用该代码,而无需从内部启动它一个特定的目录.看起来你应该只能调用System.setProperty( "user.dir", "/path/to/dir" )
,但据我所知,调用该行只是默默地失败并且什么都不做.
我会理解,如果Java不允许你这样做,如果它不是因为它允许你获得当前的工作目录,甚至允许你使用相对文件路径打开文件....
我需要从我在java项目中的一个包中的函数中执行.exe文件.现在工作目录是java项目的根目录,但是项目子目录中的.exe文件.这是项目的组织方式:
ROOT_DIR
|.......->com
| |......->somepackage
| |.........->callerClass.java
|
|.......->resource
|........->external.exe
Run Code Online (Sandbox Code Playgroud)
最初我试图通过以下方式直接运行.exe文件:
String command = "resources\\external.exe -i input -o putpot";
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);
Run Code Online (Sandbox Code Playgroud)
但问题是外部.exe需要访问它自己的目录中的一些文件,并一直认为根目录是它的目录.我甚至尝试使用.bat文件来解决问题,但同样的问题也出现了:
Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c", "resources\\helper.bat"});
Run Code Online (Sandbox Code Playgroud)
并且.bat文件与.exe文件位于同一目录中,但同样的问题也会发生.这是.bat文件的内容:
@echo off
echo starting process...
external.exe -i input -o output
pause
Run Code Online (Sandbox Code Playgroud)
即使我将.bat文件移动到root并修复其内容,问题也不会消失.plz plz plz帮助
总之,我想知道,是否有一个JVM命令行选项来更改起始工作目录?如果它很重要,我正在运行jdk1.6.0_24.
背景:
我正在使用一个名为Robolectric for Eclipse的工具来测试主机PC上的Android应用程序而不进行仿真.Robolectric需要创建一个测试项目,但测试本身要从正在测试的Android项目中运行.这是通过Eclipse完成的,将运行配置设置为测试中的项目:"在所选项目,包或源文件夹中运行所有测试".
我想如果可能的话,从JVM命令行选项做到这一点,因为其他的工具,我用,Infinitest,不允许你指定测试的工作目录.但是,它允许您指定JVM命令行选项.
解决方法:
在找到更好的解决方法之前,一个成功的方法就是从Android项目中复制AndroidManifest.xml和res文件夹.