有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

无法找到或加载主类Stanford CoreNLP Java

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

C:>;java-Xmx5g-edu。斯坦福。nlp。管道StanfordCoreNLP文件dr19ald。txt

并不断得到:

错误:无法找到或加载主类edu。斯坦福。nlp。管道斯坦福德科伦普

我看过类似的帖子,这似乎是一个类路径问题,所以我尝试了以下方法,但没有成功:

C:>;java-cp“C:/stanford-corenlp-4.2.0-models-spanish.jar”edu。斯坦福。nlp。管道StanfordCoreNLP文件dr19ald。txt

我是否添加了错误的类路径,或者我缺少了另一个问题

更新: 我现在试过:

C:>;java-cp“*”教育单元。斯坦福。nlp。管道StanfordCoreNLP文件dr19ald。txt

C:>;java-cp“C://*”教育单元。斯坦福。nlp。管道StanfordCoreNLP文件dr19ald。txt

带有相同的错误消息


共 (2) 个答案

  1. # 1 楼答案

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

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

    例如,如果你是我

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

  2. # 2 楼答案

    reference for the command line表示应该在类路径中包含多个jar。他们使用所有分布式罐子(*)

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

    编辑

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

    一个关键问题是,JAXB API/Impl不再是Java 11包的一部分,代码在通往雅加达EE的路上正在经历一些变化。Java8仍然包含一个JAXB实现,尽管发行版中包含了较新的独立文件。代码依赖于类com.sun.istack.FinalArrayList,该类不包含在发行版中,但包含在旧的com中。太阳xml。绑定:POM中引用的jaxb核心

    解决方案

    您需要下载实用程序JAR istack-commons-runtime-3.0.7.jar(试试https://mvnrepository.com/artifact/com.sun.istack/istack-commons-runtime)。 我把它放在子目录“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)