How can I change the current working directory from within a Java program? Everything I've been able to find about the issue claims that you simply can't do it, but I can't believe that that's really the case.
I have a piece of code that opens a file using a hard-coded relative file path from the directory it's normally started in, and I just want to be able to use that code from within a different Java program without having to start it from within a particular directory. It seems like you should just be able to call
System.setProperty( "user.dir", "/path/to/dir" )
There is no reliable way to do this in pure Java. Setting the
user.dir property via
java -Duser.dir=... does seem to affect subsequent creations of
Files, but not e.g.
File(String parent, String child) constructor can help if you build up your directory path separately from your file path, allowing easier swapping.
An alternative is to set up a script to run Java from a different directory, or use JNI native code as suggested below.
The relevant Sun bug was closed in 2008 as "will not fix".