在终端上设置了Environoment变量,但System.getenv返回null。java问题

在终端上设置了Environoment变量,但System.getenv返回null。java问题,java,path,set,environment-variables,Java,Path,Set,Environment Variables,我已更改了我的~/.bashrc文件。我改变了/etc/environment。我已经完成了导出WNHOME=“/usr/local/WordNet-3.0”。我什么都试过了。(我正在运行ArchLinux,以防万一) 我认为必须在我的机器上设置环境变量,如果我用echo$WNHOME检查它,我会得到正确的结果 但是当我调用System.out.println(System.getenv(“WNHOME”)在我的java程序中,我不断得到null,这是什么原因 输出如下所示: Path is '

我已更改了我的
~/.bashrc
文件。我改变了
/etc/environment
。我已经完成了导出WNHOME=“/usr/local/WordNet-3.0”。我什么都试过了。(我正在运行ArchLinux,以防万一)

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

但是当我调用
System.out.println(System.getenv(“WNHOME”)
在我的java程序中,我不断得到
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
文件。

此变量是在运行Java程序的环境中设置的吗?这意味着什么?如何运行Java程序?你是从设置了
WNHOME
的shell中运行它的吗?我是从eclipse中运行的,我不是从终端运行的,我使用这个“通配符键”+“r”运行它,然后像那样运行它!我可以在终点站运行它。这是一个不错的黑客,但。。某种程度上。。。不满意?还是不行。java将其显示为null。在月食中。但是我“清理”了这些项目,并尝试了,但仍然没有。在重新启动eclipse后尝试。在进行更改后,您是否已获取了.profile?在.profile中进行更改后,使用
source~/.profile
是的,这样做了。仍然nothing@LutzHorn从我设置env变量的shell中运行它是一个好主意,这是可行的,但是如果我用run命令尝试它,它不会,这是注释,但是。。。不管怎样,这足以完成任务。非常感谢。