NLTK无法找到Java可执行文件
我正在使用NLTK的nltk.tag.stanford,这个需要调用Java程序。
我把JAVAHOME设置成了C:\Program Files\Java\jdk1.6.0_25,也就是我安装JDK的地方,但当我运行程序时却出现了错误
"NLTK was unable to find the java executable! Use the config_java() or set the JAVAHOME variable"
然后我花了3个小时来调试,尝试了
config_java("C:/Program Files/Java/jdk1.6.0_25/")
config_java("C:/Program Files/Java/jdk1.6.0_25/bin/")
and those without the ending "/".
但是NLTK还是找不到它。
有没有人知道哪里出了问题?非常感谢!
14 个回答
6
protos1210的建议对我有用,只是做了一些小调整。完整的答案是:
import nltk
nltk.internals.config_java("C:/Program Files/Java/jdk1.6.0_30/bin/java.exe")
在我重新启动IDLE之后,下面的代码就能正常工作了。
import nltk
path_to_model = "C:/Program Files/stanford-postagger-2012-05-22/models/english-bidirectional-distsim.tagger"
path_to_jar = "C:/Program Files/stanford-postagger-2012-05-22/stanford-postagger.jar"
tagger = nltk.tag.stanford.POSTagger(path_to_model, path_to_jar)
tokens = nltk.tokenize.word_tokenize("I hope this works!")
print tagger.tag(tokens)
输出结果是: [('I', 'PRP'), ('hope', 'VBP'), ('this', 'DT'), ('works', 'VBZ'), ('!', '.') ]。
我一直无法让它识别我的JAVAHOME环境变量。
10
我花了大约七个小时来解决这个问题,最后找到了一个办法。你可以直接在internals.py文件的第69行和第72行写入你的Java目录,具体如下:
##########################################################################
# Java Via Command-Line
##########################################################################
_java_bin = 'C:\Program Files\Java\jdk1.7.0_25\\bin\java.exe'
_java_options = []
# [xx] add classpath option to config_java?
def config_java(bin='C:\Program Files\Java\jdk1.7.0_25\\bin\java.exe', options=None, verbose=True):
这样就解决了我的问题。(我是在32位的Windows环境下工作)
54
如果设置JAVA_HOME这个环境变量没有解决你的问题,可以试试这个方法:
config_java()
对我来说没用。我在我的代码里加了以下几行,然后就成功了:
import os
java_path = "C:/Program Files/Java/jdk1.7.0_11/bin/java.exe"
os.environ['JAVAHOME'] = java_path
我是在Windows 7 64位系统上运行的。