无法设置我自己的Stanford CoreNLP服务器,错误"无法删除关机密钥文件"

时间:2017-08-25 16:49:06

标签: nlp stanford-nlp

我尝试在official guide之后设置自己的Stanford CoreNLP服务器。但是,我无法使用以下命令启动服务器:

java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000

我粘贴以下错误消息:

my_server_name$ java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000
[main] INFO CoreNLP - --- StanfordCoreNLPServer#main() called ---
[main] INFO CoreNLP - setting default constituency parser
[main] INFO CoreNLP - warning: cannot find edu/stanford/nlp/models/srparser/englishSR.ser.gz
[main] INFO CoreNLP - using: edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz instead
[main] INFO CoreNLP - to use shift reduce parser download English models jar from:
[main] INFO CoreNLP - http://stanfordnlp.github.io/CoreNLP/download.html
Exception in thread "main" java.lang.IllegalStateException: Could not delete shutdown key file
at edu.stanford.nlp.pipeline.StanfordCoreNLPServer.<init>(StanfordCoreNLPServer.java:195)
at edu.stanford.nlp.pipeline.StanfordCoreNLPServer.main(StanfordCoreNLPServer.java:1323)
[Thread-0] INFO CoreNLP - CoreNLP Server is shutting down.

主要问题是IllegalSstateException:无法删除关机密钥文件。我只是想知道这个问题的原因是否是sudo访问。官方指南没有明确说明此命令需要sudo访问权限。

我想问1)上述命令是否需要sudo访问权限; 2)如果该命令不需要sudo访问权限,那么我的IllegalSstateException可能会出现什么错误。

感谢。

PS:我在使用Ubuntu 16.04.3 LTS的服务器上运行。

1 个答案:

答案 0 :(得分:4)

当您的文件系统上已存在关闭密钥文件,您正在启动新的CoreNLP服务器实例,并且无法删除旧的关闭密钥文件时,会发生此错误。您是否以两个不同的用户身份运行服务器?

更一般地说,您是否拥有存储在java属性java.io.tmpdir中的目录的权限?传统上,这是Linux机器上的/tmp。关机键存储在:

 System.getProperty("java.io.tmpdir") + File.separator + "corenlp.shutdown"

因此,对于Linux系统:

/tmp/corenlp.shutdown

错误表明此文件存在,并且无法通过Java删除。您应该检查您对此文件的权限,这应该可以帮助您调试错误。

在最坏的情况下,一个简单的解决方法是在启动服务器时自己设置tmpdir。例如:

java -Djava.io.tmpdir=/path/to/tmp -mx4g edu.stanford.nlp.pipeline.StanfordCoreNLPServer 9000