2

如果从命令行运行“java -jar”,有没有办法从 java 程序设置本地 dos 变量,以便在退出 java 后,它仍然可以存在于同一个会话中?

例子

(cmd)
c:\java package.Class 

/*then in program you do something like 
'System.setVariable("name","value");'
*/

// java exited

echo %name%

value
4

3 回答 3

3

不能。进程不能修改其父级的环境。

您能做的最好的事情就是稍微作弊,然后执行以下任一操作:

  • 让 Java 程序在某个已知位置写出一个批处理文件,然后调用它来设置变量。由于批处理文件在当前cmd进程中运行,因此它们可以在那里更改环境变量。
  • 让程序输出名称/值对或完整set的命令,然后捕获输出并自己设置变量。我猜,只要你想要或有其他输出就会出错。
于 2011-06-08T09:20:57.863 回答
1

根据问题 2121795可以设置环境变量。但是,我从未尝试过这些方法,因此无法验证它们是否有效。

如果它们确实有效,请记住设置环境变量不会在当前会话中生效(您需要重新启动 cmd 窗口)。

于 2011-06-08T10:04:22.597 回答
0

这个问题也很有趣,它有解释如何使用 Preferences API 修改注册表的答案。我想你应该能够通过这条路线修改环境变量(没有仔细检查)。

于 2011-06-08T12:47:20.050 回答