CoreNLP 创建 edu.stanford.nlp.time.TimeExpressionExtractorImpl 时出错,

0s7z1bwu  于 6个月前  发布在  其他
关注(0)|答案(7)|浏览(73)

我们在尝试初始化NLP时遇到了这个错误。我们使用的是Java 17,尝试使用Jollyday 5.0.10,但这并没有解决问题。有什么建议吗?

错误原因:edu.stanford.nlp.util.ReflectionLoading$ReflectionLoadingException: Error creating edu.stanford.nlp.time.TimeExpressionExtractorImpl

解决方案:这个问题可能是由于Stanford CoreNLP库的版本不兼容导致的。你可以尝试升级或降级Stanford CoreNLP库的版本,以解决此问题。具体操作如下:

  1. 打开项目的pom.xml文件(如果是Maven项目)或build.gradle文件(如果是Gradle项目)。
  2. 查找与Stanford CoreNLP相关的依赖项。
  3. 根据需要升级或降级Stanford CoreNLP的版本。
  4. 保存更改并重新构建项目。

如果问题仍然存在,你可以考虑使用其他时间表达式提取器,如OpenNLP或smile。
这是一个Java堆栈跟踪,它显示了在初始化过程中发生的一系列方法调用。这个堆栈跟踪主要涉及到Java的反射API和XML绑定库(JAXB)。

问题出现在尝试访问java.lang.ClassLoader.defineClass方法时,该方法是受保护的,不能直接访问。这是因为模块化系统(Java 9引入)不允许未命名模块访问java.lang包。要解决这个问题,需要在运行时打开java.lang包以允许未命名模块访问。

要解决此问题,可以尝试以下方法:

  1. 在运行Java程序时添加以下JVM参数:

--add-opens java.base/java.lang=ALL-UNNAMED

这将允许所有未命名模块访问java.lang包。请注意,这种方法可能会导致安全风险,因为它允许未命名模块访问敏感类和方法。因此,在使用此选项时要谨慎。

  1. 如果可能的话,升级到更高版本的Java,因为较新版本的Java已经解决了这个问题。例如,从Java 9升级到Java 11或更高版本。
35g0bw71

35g0bw711#

你正在使用哪个版本的CoreNLP? 你所说的初始化JollyDay是什么意思? 除了创建一个CoreNLP管道,你还做了什么?
我们遇到了在初始化NLP时遇到的错误。尝试使用Jollyday 5.0.10,但这并没有解决该问题。请问有什么其他方法可以解决这个问题吗?

g9icjywg

g9icjywg2#

你好,
coreNlp 4.4.0,但我也尝试在4.5.1上运行。
表示初始化jollyDay时出现问题的异常-我只运行了常规的coreNLP管道。

bwntbbo3

bwntbbo33#

我认为这只是因为你使用的JollyDay版本与CoreNLP使用的版本不同(4.9)。当然,保持最新版本是很好的,但我的印象是界面已经发生了足够多的变化,使得这变得有点麻烦。

2023年1月9日,星期一,上午7:40,leePyramid ***@***.***>写道:嗨,coreNlp 4.4.0,我也尝试过在4.5.1上运行。异常表明初始化jollyDay时出现问题——我只运行了常规的coreNLP管道。——直接回复此电子邮件,查看GitHub上的回复<#1328 (comment)>,或取消订阅< https://github.com/notifications/unsubscribe-auth/AA2AYWILMPHRGELMOTOXAETWRQWN7ANCNFSM6AAAAAATVKBY2E >。您收到此邮件是因为您评论了。消息ID:***@***.***>

zzzyeukh

zzzyeukh4#

你好,
我们没有使用不同的版本,只是使用了NLP依赖并遇到了这个异常。
我们认为可能是Jollyday 4.9在Java 17上存在问题,所以我们尝试使用JollyDay 5.0.10,但仍然遇到了相同的异常-因此将其还原。

s3fp2yjn

s3fp2yjn5#

这可能与此有关吗? svendiedrichsen/jollyday#163...

2023年1月11日,星期三晚上10点18分,leePyramid ***@***.***>写道:嗨,我们没有使用不同的版本,只是使用了NLP依赖项并遇到了这个异常。我们认为Jollyday 4.9在Java 17上可能存在问题,所以我们尝试使用JollyDay 5.0.10,但仍然遇到了相同的异常——因此我们将其还原了。——直接回复此电子邮件,查看GitHub上的回复<#1328 (评论)>,或取消订阅 < https://github.com/notifications/unsubscribe-auth/AA2AYWJFUMBREWZGFS2V25DWR6O2NANCNFSM6AAAAAATVKBY2E >。您收到此邮件是因为您进行了评论。消息ID: ***@***.***>

9bfwbjaz

9bfwbjaz6#

尝试将以下代码添加到nlp依赖项中:

<dependency>
  <groupId>de.jollyday</groupId>
  <artifactId>jollyday-manager</artifactId>
  <version>0.4.1</version>
</dependency>

然后重新运行程序。

fdx2calv

fdx2calv7#

看起来我们必须对代码本身进行一些更改,也许只需要更改导入以将其作为替换。这使得同时支持Java 8和Java 17变得有些麻烦。我想大多数世界都已经至少转移到了Java 11,但这不是我们可以在接下来的一两周内决定的事情(这是我想要在下一次发布CoreNLP的时候做的事情)

相关问题