Definir variáveis de sistema do Windows com Java
Existe uma maneira de adicionar um diretório específico para o% system path% pATH% do Windows? Isso não parece funcionar:
String[] cmd = { "cmd", "/c", "set", "PATH=\"%PATH%;c:\\test\"" };
Runtime.getRuntime().exec( cmd );
c: \ test \ não aparece em System.getenv ("PATH"); ou na saída de
String[] cmd = { "cmd", "/c", "echo", "%PATH%" };
Runtime.getRuntime().exec( cmd );
O que eu preciso é modificar a variável% PATH% para o atual Java-Process no Windows. O motivo é que preciso carregar alguns arquivos dll nativos que fazem referência cruzada uns aos outros. Então, gostaria de adicionar o caminho do aplicativo ao ambiente do Windows.
A próxima coisa que eu tentei foi um pequeno JNI-Wrapper para o C-Function "putenv" que se parece com isso:
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);
}
É assim que eu chamo isso:
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 );
Mas os pathes são iguais. Não tenho certeza se o Mapa do Ambiente do Sistema Java não está atualizado ou se o putenv não funcionou. Existe uma maneira de verificar isso?