特定のディレクトリを 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 関数「putenv」用の小さな JNI ラッパーです。
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 のマップが更新されていないのか、それとも putenv が機能しなかったのかはわかりません。これを確認する方法はありますか?