printenv WNHOME
echo $WNHOME
정답은 모두 있지만 Java 프로그램은 아닙니다.환경 변수를 설정하는 방법 java unix .getenv (NOT_WORKING)
this 질문에 표현 된대로 '사용자 설명서'의 첫 번째 기능인 예제 프로그램 JWI (the MIT Java Wordnet Interface)을 실행하려고합니다. 그러나 코드를 실행할 때 오류가 계속 발생합니다 java.net.MalformedURLException
. Here은 유사한 문제를 다루고있는 것으로 보이는 토론이지만, 아무런 도움이되지 않는 해결책을 시도했습니다.
코드는 다음과 같습니다
import java.io.File;
import java.io.IOException;
import java.io.ObjectInputStream.GetField;
import java.net.URL;
import java.nio.file.Paths;
import edu.mit.jwi.*;
import edu.mit.jwi.item.IIndexWord;
import edu.mit.jwi.item.ILexFile;
import edu.mit.jwi.item.ISenseKey;
import edu.mit.jwi.item.IWord;
import edu.mit.jwi.item.IWordID;
import edu.mit.jwi.item.POS;
public class MITJavaWordNetInterface
{
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);
//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()) ;
}
}
내가 정식으로 완료 한 내 워드 넷 istallation의 루트의 위치에
WNHOME
변수 시스템 환경 설정의 전제 조건 단계가 있었다. 내
WNHOME
변수는
/usr/local/WordNet-3.0
입니다. 이 오류의 원인은 무엇입니까? 어떻게 해결 될 수 있습니까?
다음과 같이 URL을 변경해 보았습니다 (똑같이 효과적이지 않습니다).
final URL url = Paths.get(wnhome, "dict").toUri().toURL();
System.out.println("Path is '" + path + "'");
의 결과는 다음과 같습니다
Path is 'null/dict'
전체 오류는 이것이다 :
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:28)
보겠습니다. 프로토콜이 "file"(공백 포함) 인 URL을 만들려고합니다. 따라서 URL은 "file : // path/to/file/goes/here"(공백으로 표시)처럼 보입니다. 왜 그걸하려는거야? – immibis
그 예가 공식화 된 방법이었습니다. 올바르지 않다고 생각합니까? 그것을 해결하는 방법? –
전체 stacktrace를 추가하십시오.'path'의 내용이 무엇인지 보여주십시오. – Jens