execute file from defined directory with Runtime.getRuntime().exec

It works for me when I use the following overloaded method:

public Process exec(String command, String[] envp, File dir)

For example:

File dir = new File("C:/Users/username/Desktop/Sample");
String cmd = "java -jar BatchSample.jar";
Process process = Runtime.getRuntime().exec(cmd, null, dir);

The command just stores the command you want to run in command line. dir just stores the path of your .jar file to be executed.


It should be possible to call the executable with a specific working directory using Runtime.exec(String command, String[] envp, File dir)

as follows:

Process process2=Runtime.getRuntime().exec("/data/data/my-package/files/myfile",
        null, new File("/data/data/my-package/files"));

maybe without the full path to myfile

Process process2=Runtime.getRuntime().exec("myfile",
        null, new File("/data/data/my-package/files"));

Context#getFilesDir() instead of hardcoding the path should work too and is safer / cleaner than specifying the path yourself since it is not guaranteed that /data/data/.. is always the correct path for all devices.

Process process2=Runtime.getRuntime().exec("myfile",
        null, getFilesDir()));

The problem with cd somewhere is that the directory is changed for a different Process so the second call to exec in a new Process does not see the change.

Tags:

Java

Shell

Exec