找不到或加载主类--Stanford CoreNLP--Java

找不到或加载主类--Stanford CoreNLP--Java,java,stanford-nlp,Java,Stanford Nlp,我是java新手(我有java 8),正在尝试在CMD中运行CoreNLP管道: C:>java-Xmx5g edu.stanford.nlp.pipeline.StanfordCoreNLP-file dr19ald.txt 并不断得到: 错误:无法找到或加载主类edu.stanford.nlp.pipeline.StanfordCoreNLP 我看过类似的文章,这似乎是一个类路径问题,所以我尝试了以下方法,但没有效果: C:>java-cp“C:/stanford-corenlp-4.2.0

我是java新手(我有java 8),正在尝试在CMD中运行CoreNLP管道:

C:>java-Xmx5g edu.stanford.nlp.pipeline.StanfordCoreNLP-file dr19ald.txt

并不断得到:

错误:无法找到或加载主类edu.stanford.nlp.pipeline.StanfordCoreNLP

我看过类似的文章,这似乎是一个类路径问题,所以我尝试了以下方法,但没有效果:

C:>java-cp“C:/stanford-corenlp-4.2.0-models-spanish.jar”edu.stanford.nlp.pipeline.StanfordCoreNLP-文件dr19ald.txt

我是否添加了不正确的类路径,或者是否缺少其他问题

更新: 我现在尝试:

C:>java-cp“*”edu.stanford.nlp.pipeline.StanfordCoreNLP-文件dr19ald.txt

C:>java-cp“C://*”edu.stanford.nlp.pipeline.StanfordCoreNLP-文件dr19ald.txt

带有相同的错误消息。

指示在类路径中应该包含多个jar。他们使用所有分布式jar(*)

根据您的Java版本(8或更高版本),您还应该指定modules指令

编辑 我进一步调查了情况,情况相当混乱。 该发行版包括一些第三方库及其JAR格式的源代码。其他库根本不包括在内,尽管它们在pom.xml中被引用(如果您有工具,可以下载)

一个关键问题是jaxbapi/Impl不再是java11包的一部分,代码在到达jakartae的过程中发生了一些变化。Java8仍然包含一个JAXB实现,尽管该发行版包含较新的独立文件。代码依赖于类
com.sun.istack.FinalArrayList
,该类未包含在发行版中,但包含在POM中引用的较旧的com.sun.xml.bind:jaxb核心中

解决方案 您需要下载实用程序JAR
istack-commons-runtime-3.0.7.JAR
(试试)。 我将它放在子目录“m2”中,并在脚本中将其引用为REPO

我编写了一个Windows cmd脚本来开始处理

REM  run the Stanford CoreNLP on an input file 
@echo off 
SET JARS=stanford-corenlp-4.2.0.jar;stanford-corenlp-4.2.0-models.jar
SET JARS=%JARS;jollyday.jar;xom.jar;joda-time.jar;ejml-core-0.39.jar
SET JARS=%JARS%;ejml-ddense-0.39.jar;ejml-simple-0.39.jar;slf4j-api.jar
SET JARS=%JARS%;slf4j-simple.jar;protobuf.jar;javax.activation-api-1.2.0.jar
SET JARS=%JARS%;jaxb-api-2.4.0-b180830.0359.jar;jaxb-impl-2.4.0-b180830.0438.jar

SET REPO=m2
SET JARS=%JARS%;%REPO%\istack-commons-runtime-3.0.7.jar

@echo on
java -Xmx3g -cp %JARS% edu.stanford.nlp.pipeline.StanfordCoreNLP -file %1
我将这个脚本放在提取分发ZIP的目录中


现在,我可以打开Windows命令提示符,导航到分发目录并启动脚本,将输入文件作为参数传递(脚本中的%1)。

您是否已将各种jar文件下载到根目录中?这听起来像是组织的噩梦

如果不是,这就解释了为什么
java-cp“*”
不起作用。您需要找出CoreNLP发行版的子目录,并将其设置为类路径中的目录:

java-cp“c:\Users\john\nlp\codebase\CoreNLP\lib\*”…
例如,如果你是我


如果在Windows计算机上需要多个目录,正确的分隔符是

模块是在Java 9中引入的。我现在尝试了C:\>Java-cp“edu.stanford.nlp.pipeline.StanfordCoreNLP-file dr19ald.txt和C:\>Java-cp“C:/”edu.stanford.nlp.pipeline.StanfordCoreNLP-file dr19ald.txt,并显示了相同的错误消息。(我还有Java8)