Java中如何永久设置环境变量

3

使用Java,如何将环境变量永久添加到现有的环境变量中。

这样当我重启Windows或Linux时,该环境变量仍然存在。


你使用哪个操作系统?还是你正在寻找一个不受操作系统限制的解决方案? - Dave
1
你是在尝试使用Java编写一些系统管理工具,还是在尝试修改自己应用程序的配置?因为如果是后者,我建议将你的配置移动到其他地方。 - Dilum Ranatunga
跟随 @DilumRanatunga 所说的,Preferences API 是一种在系统无关的方式下保存每个用户配置的好方法。 - jtahlborn
但是首选项 API 对任何事情都不做出保证。非常不幸。 - Dilum Ranatunga
我正在使用Windows,但我需要这个功能在两个平台上都能使用。 - becks
5个回答

1

你可能想看一下this

在Windows中,你可以通过命令行设置路径变量,这应该能解决问题。

我意识到这只适用于Windows。


0

并非以任何跨平台的方式。在Linux中,这些通常是通过shell init脚本进行控制的。您需要编辑其中之一(具体取决于用户、系统和shell类型)。在Windows中,这是通过系统配置来控制的(我想应该有一些特定于Windows的API来修改这些内容)。


0

从程序中复制JDK路径,例如C:\Program Files\Java\jdk1.6.0\bin,并将其粘贴到用户变量中,在末尾加上 ;.; 并命名。 在系统变量中点击“新建”,输入名称并粘贴路径... 然后保存...


0

打开命令提示符 .. 检查当前路径 >echo %path% 设置路径 >set path="C:\Program Files\Java\jdk1.6.0\bin" 输入确定后,检查并运行Java程序


-2

环境变量是特定于平台的。Windows将它们存储在注册表中。

*在注册表中,用户环境变量存储在HKEY_CURRENT_USER\Environment中,系统环境变量存储在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment中(来自http://demins.blogspot.co.il/2007/10/where-does-windows-xp-store-evrironment.html)*

有很多方法可以从Java访问Windows注册表。例如,您可以使用名为reg的实用程序执行命令行,该实用程序具有丰富的命令行。您还可以使用其中一个互操作性API,如JaWin、Jinterop、Jintegra。您还可以参考我在这里解释的解决方案。

Linux系统下,你可以使用类似于 export MYVAR=myvalue 的命令行。我是说,在Java中使用 Runtime.exec() 或者 ProcessBuilder 执行这个命令行。问题是,这个变量不会真正地持久化。它只会对所有用户可见,直到计算机重启。要让它真正持久化,你需要修改用户登录脚本(例如,对于大多数Linux系统默认使用bash作为shell的用户来说,需要修改bashrc文件)。

1
对于 Linux 解决方案,从子进程运行 export 不会影响除了在同一子进程中运行的后续进程之外的任何其他事情(它不会影响当前用户所做的任何其他事情,当然也不会影响任何其他用户)。实际上,该命令甚至无法直接运行,因为需要一个 shell 来执行它。 - jtahlborn
@jtahlborn,抱歉我忘了提醒要以/bin/sh export ...或类似的方式运行命令。 我相信这个细节可以让OP自己发现。 - AlexR
这只涉及到我所说的一小部分,但没有涉及到任何重点。 - jtahlborn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接