Java 中如何读取环境变量

iamfancy 2002-03-18 12:21:14
据说 Java 1.0 版本支持读取环境变量,但以后就取消了这一支持。那么,现在我该怎么样获取环境变量的值呢?
比如:
Windows 下
set MY_NAME="fancy"
Linux 下
export MY_NAME="fancy"

然后我要用一个名为 Test 的程序读出环境变量的值并显示出来,如
Windows 下
C:\>java Test MY_NAME
fancy
C:\>_

Linux 下
[fancy@outinn java]$ java Test MY_NAME
fancy
[fancy@outinn java]$ _

通过 java -Dname=%MY_NAME% ... 的方法我已经知道了,我不喜欢这种方法,请告诉我其它方法。
...全文
1066 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamfancy 2002-05-23
  • 打赏
  • 举报
回复
没找到呢,可不可以具体一点的网址?
forulong 2002-05-17
  • 打赏
  • 举报
回复
so lag
FooSleeper 2002-05-17
  • 打赏
  • 举报
回复
eclipse
worldheart 2002-05-16
  • 打赏
  • 举报
回复
http://www.eclispe.org

在eclispe中提供了类似的处理,你自己仔细分析一下!!!!

很经典!!!
lzmfmx 2002-05-16
  • 打赏
  • 举报
回复
public Properties getEnvVars() throws Throwable
{
Process process = null;
Properties envVars = new Properties();
Runtime runtime = Runtime.getRuntime();
String OS = System.getProperty("os.name").toLowerCase();
if (OS.indexOf("windows 9") > -1)
{
process = runtime.exec( "command.com /c set" );
}
else if (OS.indexOf("nt") > -1 || OS.indexOf("windows 2000") > -1)
{
process = runtime.exec( "cmd.exe /c set" );
}
else if (OS.indexOf("unix") > -1)
{
process = runtime.exec( "/bin/env" );
}
BufferedReader br = new BufferedReader ( new InputStreamReader( process.getInputStream() ) );
String line;
while( (line = br.readLine()) != null )
{
int idx = line.indexOf( '=' );
String key = line.substring( 0, idx );
String value = line.substring( idx+1 );
envVars.setProperty( key.toUpperCase(), value );
}
process.destroy ();
return envVars;
}
iamfancy 2002-05-16
  • 打赏
  • 举报
回复
打不开那个网站呢?
jimjxr 2002-03-27
  • 打赏
  • 举报
回复
我试了试,直接用SET是不行的,得用"cmd.exe /C SET" (WinNT)或"command.exe /C SET" (Win9x),因为SET不是可执行文件而是Windows命令航解释器的内置命令。
liegou911 2002-03-26
  • 打赏
  • 举报
回复
使用API函数.
iamfancy 2002-03-26
  • 打赏
  • 举报
回复
怎么没有人回答了?
iamfancy 2002-03-19
  • 打赏
  • 举报
回复
那么那个 Exception 的问题呢?
GJA106 2002-03-19
  • 打赏
  • 举报
回复
在程序中用System.getProperties().getProperty("os.name")来判断操作系统决定执行哪个:set或export
iamfancy 2002-03-19
  • 打赏
  • 举报
回复
Process p = Runtime.getRuntime().exec(cmdline); 运行到这一句出错
java.io.IOException: CreateProcess: set error=0
at java.lang.Win32Process.create(Native Method)
at java.lang.Win32Process.<init>(Win32Process.java:66)
at java.lang.Runtime.execInternal(Native Method)
at java.lang.Runtime.exec(Runtime.java:551)
at java.lang.Runtime.exec(Runtime.java:418)
at java.lang.Runtime.exec(Runtime.java:361)
at java.lang.Runtime.exec(Runtime.java:325)
at Test.sys_cmdExe(Test.java:14)
at Test.main(Test.java:28)

还有,这样子在 Windows 下用 set ,在 Linux 下用 export,不可移植啊!我总不能让用户自己输入 set 或者 export 吧
skyyoung 2002-03-18
  • 打赏
  • 举报
回复
public static void SYS_CmdExec(String cmdline)
{
try {
String line;
Process p = Runtime.getRuntime().exec(cmdline);
BufferedReader input =
new BufferedReader
(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
}
catch (Exception err) {
err.printStackTrace();
}
}
jimjxr 2002-03-18
  • 打赏
  • 举报
回复
没有好办法,自己写的话可以调C函数或用Runtime.exec运行SET命令,然后分析输出的结果。
iamfancy 2002-03-18
  • 打赏
  • 举报
回复
getProperties() 只能得到一些 Java 内置的环境变量,不能得到系统环境变量的。我需要的是得到系统环境变量。
skyyoung 2002-03-18
  • 打赏
  • 举报
回复
(System.getProperties()).list(System.out);
Whyin 2002-03-18
  • 打赏
  • 举报
回复
厉害呀,甲兄

23,409

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧