在终端上设置了环境变量,但 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
文件中。
我已经更改了我的 ~/.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
文件中。