在 Java 1.4 中访问 Windows 系统变量

发布于 2024-07-26 07:59:42 字数 52 浏览 7 评论 0原文

使用 J2SE 1.4 时获取 Windows 中环境变量值的最佳/万无一失的方法是什么?

What is the best/foolproof way to get the values of environment variables in Windows when using J2SE 1.4 ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

鲸落 2024-08-02 07:59:42

您可以使用 getEnv() 获取环境变量:

String variable = System.getenv("WINDIR");  
System.out.println(variable);  

我相信 getEnv() 函数在某个时候已被弃用,但后来在 java 1.5

ETA 中“不推荐”:

我现在看到问题专门指 java 1.4,所以这不会为您工作(或者至少您最终可能会收到弃用警告)。 我会将答案留在这里,以防其他人偶然发现这个问题并使用更高版本。

You can use getEnv() to get environment variables:

String variable = System.getenv("WINDIR");  
System.out.println(variable);  

I believe the getEnv() function was deprecated at some point but then "undeprecated" later in java 1.5

ETA:

I see the question now refers specifically to java 1.4, so this wouldn't work for you (or at least you might end up with a deprecation warning). I'll leave the answer here though in case someone else stumbles across this question and is using a later version.

情释 2024-08-02 07:59:42

为此需要切换到 JVM。 来自此处

使用“-D”开关启动 JVM 以将属性传递给应用程序
并使用 System.getProperty() 方法读取它们。

SET myvar=Hello world
SET myothervar=nothing
java -Dmyvar="%myvar%" -Dmyothervar="%myothervar%" myClass

然后在我的班级

String myvar = System.getProperty("myvar");
String myothervar = System.getProperty("myothervar");

There's a switch to the JVM for this. From here:

Start the JVM with the "-D" switch to pass properties to the application
and read them with the System.getProperty() method.

SET myvar=Hello world
SET myothervar=nothing
java -Dmyvar="%myvar%" -Dmyothervar="%myothervar%" myClass

then in myClass

String myvar = System.getProperty("myvar");
String myothervar = System.getProperty("myothervar");
如梦亦如幻 2024-08-02 07:59:42

你绝对没有办法直接从 java API 访问环境变量。 使用 Runtime.exec 使用这样的代码实现这一点的唯一方法:

Process p = null;
Runtime r = Runtime.getRuntime();
String OS = System.getProperty("os.name").toLowerCase();
// System.out.println(OS);
if (OS.indexOf("windows 9") > -1) {
  p = r.exec( "command.com /c set" );
}
else if ( (OS.indexOf("nt") > -1)
       || (OS.indexOf("windows 2000") > -1 )
       || (OS.indexOf("windows xp") > -1) ) {
  // thanks to JuanFran for the xp fix!
  p = r.exec( "cmd.exe /c set" );
}

尽管您可以通过 System.getProperties() 访问 Java 变量;
但是您只能获得 JVM 本身映射的一些环境变量,以及可以在 java 命令行上使用“-Dkey=value”提供的其他数据。

有关详细信息,请参阅 http://www.rgagnon.com/javadetails/java-0150.html

You have definitely no way to access environment variables straigthly from java API. The only way to achieve that with Runtime.exec with such a code :

Process p = null;
Runtime r = Runtime.getRuntime();
String OS = System.getProperty("os.name").toLowerCase();
// System.out.println(OS);
if (OS.indexOf("windows 9") > -1) {
  p = r.exec( "command.com /c set" );
}
else if ( (OS.indexOf("nt") > -1)
       || (OS.indexOf("windows 2000") > -1 )
       || (OS.indexOf("windows xp") > -1) ) {
  // thanks to JuanFran for the xp fix!
  p = r.exec( "cmd.exe /c set" );
}

Although you can access Java variables thanks to System.getProperties();
But you would only get some env variables mapped by JVM itself, and additional data you could provide on java command line with "-Dkey=value"

For more information see http://www.rgagnon.com/javadetails/java-0150.html

月依秋水 2024-08-02 07:59:42

将它们作为 -D 系统属性传递到 JVM,例如:

java -D<java var>=%<environment var>%

这样您就不会与特定操作系统绑定。

Pass them into the JVM as -D system properties, for example:

java -D<java var>=%<environment var>%

That way you don't become tied to a particular OS.

回忆那么伤 2024-08-02 07:59:42
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
     System.out.format("%s=%s%n", envName, env.get(envName));
}
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
     System.out.format("%s=%s%n", envName, env.get(envName));
}
留蓝 2024-08-02 07:59:42

Apache Commons Exec 提供了“org.apache.commons.exec.environment.EnvironmentUtils”来获取 JDK 1.5 之前的环境变量:

(String) EnvironmentUtils.getProcEnvironment().get("SOME_ENV_VAR")

Apache Commons Exec provides with "org.apache.commons.exec.environment.EnvironmentUtils" a way to get the environment variables on JDK's prior 1.5:

(String) EnvironmentUtils.getProcEnvironment().get("SOME_ENV_VAR")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文