在终端上设置了环境变量,但 System.getenv returns 为空。 java 个问题

envirnoment variable set on terminal but System.getenv returns null. java problems

我已经更改了我的 ~/.bashrc 文件。我已经改变了/etc/environment。我已经完成 export WNHOME="/usr/local/WordNet-3.0"。我尝试了所有 here 甚至更多。 (我是 运行 arch linux,以防有任何后果)。

我认为必须在我的机器上设置环境变量,如果我用 echo $WNHOME 检查它,我会得到正确的结果。

然而,当我在我的 java 程序中调用 System.out.println(System.getenv("WNHOME")); 时,我一直收到 null,这可能是什么原因?

输出如下所示:

Path is 'null/dict'
null
Exception in thread "main" java.io.IOException: Dictionary directory does not exist: null/dict
at edu.mit.jwi.data.FileProvider.open(FileProvider.java:306)
at edu.mit.jwi.DataSourceDictionary.open(DataSourceDictionary.java:92)
at edu.mit.jwi.CachingDictionary.open(CachingDictionary.java:133)
at MITJavaWordNetInterface.main(MITJavaWordNetInterface.java:30)

代码如下所示:

public static void main(String[] args) throws IOException
{
    // construct the URL to the Wordnet dictionary directory
    String wnhome = System.getenv("WNHOME");
    String path = wnhome + File.separator + "dict";
    System.out.println("Path is '" + path + "'"); 

    URL url = new URL ("file", null , path );
    System.out.println(System.getenv("WNHOME"));
    //final URL url = Paths.get(wnhome, "dict").toUri().toURL();

    // construct the dictionary object and open it
    IDictionary dict = new Dictionary ( url ) ;
    dict . open () ;

    // look up first sense of the word "dog "
    IIndexWord idxWord = dict . getIndexWord ("dog", POS . NOUN ) ;
    IWordID wordID = idxWord . getWordIDs () . get (0) ;
    IWord word = dict . getWord ( wordID ) ;
    System . out . println ("Id = " + wordID ) ;
    System . out . println (" Lemma = " + word . getLemma () ) ;
    System . out . println (" Gloss = " + word . getSynset () . getGloss () ) ;      
} 

~/.profile文件中设置环境变量

如果我们在 ~/.bashrc 中设置环境变量,那么这些变量只能由从 shell 启动的应用程序访问。对于桌面应用程序访问环境变量,将其设置到 ~/.profile 文件中。