如何从Java中检查PATH和CLASSPATH环境变量?

8
我正在制作一个使用JMF读取audio.wav文件的Java程序。每次计算机重新启动时,我都必须像这样从cmd设置路径。
    set CLASSPATH=%WINDIR%\java\classes\jmf.jar;%WINDIR%\java\classes\sound.jar;.;%CLASSPATH%

并且

    set PATH=%WINDIR%\System32;%PATH%  

否则,程序将编译但无法运行。 我想通过这样做实现。
    System.setProperty(key,value);

我不知道cmd命令,因此为了在通过cmd设置后检查CLASSPATH和PATH的值,我尝试了以下操作:

    public void checkProperty (){
    System.setProperty("temporaryvar","blahblah");
    System.out.println(""+System.getProperty("temporaryvar"));//prints out blahblah
    System.out.println(""+System.getProperty("CLASSPATH"));//prints out null
    System.out.println(""+System.getProperty("PATH"));//prints out null
    }

我理解并打印出了它。
    blahblah
    null
    null

为什么我从程序中设置的变量值返回,而从cmd中设置的变量值没有返回呢?这是正确的方法吗?我需要从Java中设置这两个路径,请帮忙。


看这个:https://dev59.com/HFHTa4cB1Zd3GeqPPjiC - Andremoniy
@Andremoniy,谢谢你帮我重定向。 - Soul Enrapturer
2个回答

25

使用 System.getenv 而不是 System.getProperty。请注意,您还可以获取当前Java进程的有效类路径:

System.getProperty("java.class.path");

这个值通常会与您设置的CLASSPATH环境变量不同。


你的开头句子是否意思相反?它应该是:“使用 System.getProperty 而不是 System.getenv”。如果你能加入更多的解释,那会很有帮助。 - Basil Bourque

11
因为CLASSPATHPATH是环境变量,而不是Java系统属性。可以使用-Dkey=value将系统属性传递给java进程。
尝试使用System.getenv()代替。

请将其更改为getenv,我想要无需思考地复制粘贴 :). - Meaningful Username

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