有没有办法将特定目录添加到 Windows 系统变量 %PATH%?这似乎不起作用:
String[] cmd = { "cmd", "/c", "set", "PATH=\"%PATH%;c:\\test\"" };
Runtime.getRuntime().exec( cmd );
c:\test\ 没有出现在 System.getenv("PATH"); 或在输出
String[] cmd = { "cmd", "/c", "echo", "%PATH%" };
Runtime.getRuntime().exec( cmd );
我需要的是修改 Windows 下当前 Java 进程的 %PATH% 变量。原因是,我需要加载一些相互交叉引用的本机 dll 文件。所以我想将应用程序路径添加到 Windows 环境中。
我尝试的下一件事是 C-Function “putenv” 的小型 JNI-Wrapper,如下所示:
JNIEXPORT void JNICALL Java_com_splitscreen_AppletTest_PutEnv_putEnv
(JNIEnv *env, jobject jobj, jstring val) {
jboolean iscopy;
const char *mvalue = (*env)->GetStringUTFChars(
env, val, &iscopy);
putenv(mvalue);
}
这就是我所说的:
final String curPath = System.getenv( "PATH" );
final PutEnv pe = new PutEnv();
pe.putEnv( "PATH=" + curPath + ";c:\test" );
final String newPath = System.getenv( "PATH" );
System.out.println( newPath );
但路径是平等的。我不确定 Java-System-Environment 的 Map 是否没有更新或者 putenv 是否不起作用。有没有办法检查这个?