您可以使用JNI或JNA更改流程的实际工作目录。
使用JNI,您可以使用本机函数来设置目录。POSIX方法是chdir()
。在Windows上,您可以使用SetCurrentDirectory()
。
使用JNA,您可以将本机函数包装在Java活页夹中。
对于Windows:
private static interface MyKernel32 extends Library {
public MyKernel32 INSTANCE = (MyKernel32) Native.loadLibrary("Kernel32", MyKernel32.class);
/** BOOL SetCurrentDirectory( LPCTSTR lpPathName ); */
int SetCurrentDirectoryW(char[] pathName);
}
对于POSIX系统:
private interface MyCLibrary extends Library {
MyCLibrary INSTANCE = (MyCLibrary) Native.loadLibrary("c", MyCLibrary.class);
/** int chdir(const char *path); */
int chdir( String path );
}