使用外部jar文件编译java程序

时间:2013-12-04 06:47:16

标签: java stanford-nlp

我使用standford核心nlp软件包。其中给出了一组jar文件和执行单元。我可以编译并运行一些测试示例。

有一个示例java示例。 我编译成功了:

H:\Drive E\Stanford\stanfor-corenlp-full-2013~>javac -cp stanford-corenlp-3.3.0.
jar;stanford-corenlp-3.3.0-javadoc.jar;stanford-corenlp-3.3.0-models.jar;stanfor
d-corenlp-3.3.0-sources.jar; StanfordCoreNlpDemo.java

我跑的时候:

H:\Drive E\Stanford\stanfor-corenlp-full-2013~>java -cp stanford-corenlp-3.3.0.
jar;stanford-corenlp-3.3.0-javadoc.jar;stanford-corenlp-3.3.0-models.jar;stanfor
d-corenlp-3.3.0-sources.jar; StanfordCoreNlpDemo

它提供了例外:

Searching for resource: StanfordCoreNLP.properties
Searching for resource: edu/stanford/nlp/pipeline/StanfordCoreNLP.properties
Adding annotator tokenize
Adding annotator ssplit
Adding annotator pos
Reading POS tagger model from edu/stanford/nlp/models/pos-tagger/english-left3wo
rds/english-left3words-distsim.tagger ... done [8.7 sec].
Adding annotator lemma
Adding annotator ner
Loading classifier from edu/stanford/nlp/models/ner/english.all.3class.distsim.c
rf.ser.gz ... Exception in thread "main" java.lang.OutOfMemoryError: Java heap s
pace
        at java.io.ObjectInputStream$HandleTable.grow(ObjectInputStream.java:344

如何在命令行中分配内存以删除上述异常并执行它?

我可以成功编译这两个。

java -cp "*" -mx1g edu.stanford.nlp.sentiment.SentimentPipeline -file input.txt

java -cp stanford-corenlp-3.3.0.jar;stanford-corenlp-3.3.0-models.jar;xom.jar;joda-time.jar -Xmx600m edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,parse -file input.txt

2 个答案:

答案 0 :(得分:2)

您可以将此添加到命令行-Xmx1024m,这将为您的应用程序提供1GB的ram,但我宁愿建议您使用像Netbeans see here中嵌入的那样的Java堆profiller来找出真正的问题。
你也可以参考那个有更全面解释的帖子 What are Runtime.getRuntime().totalMemory() and freeMemory()?

答案 1 :(得分:0)

我相信我已经来不及回答你的问题了,但这肯定会节省别人的时间来计算出StanfordCoreNlpDemo.java文件的执行情况。

H:\Drive E\Stanford\stanfor-corenlp-full-2013~>java -cp stanford-corenlp-3.3.0.
jar;stanford-corenlp-3.3.0-javadoc.jar;stanford-corenlp-3.3.0-models.jar;stanfor
d-corenlp-3.3.0-sources.jar; -Xmx1200m StanfordCoreNlpDemo

对于2014年的Octoboer版stanford-core-nlp,';'(分号)应替换为':'(冒号) 应该注意的是,最后一个';'需要一个空间。和上面java命令中的-Xmx选项。