Java的菜鸟在这里。我正在尝试编译一个使用stanford-corenlp-3.9.1.jar的Java程序。我正在尝试使用MacOS终端进行编译。以下是各种命令的输出
javac QuestionsToAnswer.java
这会导致大量错误
QuestionsToAnswer.java:5: error: package edu.stanford.nlp.trees does not exist
import edu.stanford.nlp.trees.Tree;
^
QuestionsToAnswer.java:6: error: package edu.stanford.nlp.trees.tregex does not exist
import edu.stanford.nlp.trees.tregex.TregexMatcher;
^
...
所以我改为运行:
javac -cp stanford-corenlp-3.9.1.jar QuestionsToAnswer.java
这将按预期工作,并创建一个QuestionToAnswer.class文件。
然后当我尝试运行程序时
java QuestionsToAnswer
它给了我以下错误:
Error: Unable to initialize main class QuestionsToAnswer
Caused by: java.lang.NoClassDefFoundError: edu/stanford/nlp/trees/Tree
要解决此问题,我将类路径添加到java命令中,以便它能够从斯坦福大学的图书馆中找到Tree
类
java -cp stanford-corenlp-3.9.1.jar QuestionsToAnswer
然后出现以下错误:
Error: Could not find or load main class QuestionsToAnswer
Caused by: java.lang.ClassNotFoundException: QuestionsToAnswer
添加类路径后,java无法找到我的原始类文件,该文件已被编译并存在于目录中。我在这里做什么错了?
答案 0 :(得分:1)
jar文件必须位于类路径中,因为您的代码使用此jar中的类。因此Java必须能够找到它们。
包含您的类的目录也必须也在类路径中,否则Java可能找不到它。
java -cp .:stanford-corenlp-3.9.1.jar QuestionsToAnswer
在Unix / MacOS上,或
java -cp .;stanford-corenlp-3.9.1.jar QuestionsToAnswer
在Windows上。