jpype_jclass.NoClassDefFoundError:edu/stanford/nlp/python/SUTimeWrapp

2024-05-15 17:00:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用sutime python包装器来制作一个日期规范化器,它将字符串中的任何时间信息转换为格式为YYYY-MM-DD的日期。我创建了一个类,其中包含了sutime输出的规则,可以将sutime输出转换为上面提到的标准格式。这个程序在我的本地机器上运行正常,但是当我试图在服务器上运行它时,我得到的是jpype_jclass.NoClassDefFoundError. 服务器使用python2运行在ubuntu上,而我的本地服务器使用的是windows和python3。在

我已经尝试在这个https://sourceforge.net/p/jpype/discussion/379372/thread/689d7a9b/论坛上实现类似问题的解决方案,但我不确定是否能够正确地实现这些方案。我还检查了sutime是否同时支持python3和python2

我认为问题出在jpype或sutime库上。在

This is the traceback that i got
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "date_normalizer.py", line 38, in __init__
    self.sutime = SUTime(jars=self.jar_files, mark_time_ranges=mark_time_ranges)
  File "/home/bridgei2i/.local/lib/python2.7/site-packages/sutime/sutime.py", line 57, in __init__
    'edu.stanford.nlp.python.SUTimeWrapper')
  File "/home/bridgei2i/.local/lib/python2.7/site-packages/jpype/_jclass.py", line 130, in __new__
    return _JClassNew(args[0], **kwargs)
  File "/home/bridgei2i/.local/lib/python2.7/site-packages/jpype/_jclass.py", line 213, in _JClassNew
    javaClass = _jpype.PyJPClass(arg)
jpype._jclass.NoClassDefFoundError: edu/stanford/nlp/python/SUTimeWrapper

Tags: inpy服务器homelibpackageslocal格式
2条回答

谢谢你,因为你说:一些罐子类依赖的文件丢失或版本错误。(这将在异常中生成一个不同的类名,因此不太可能。)

似乎在服务器上找不到包含edu/stanford/nlp/python/SUTimeWrapper的jar文件。失败的特定代码是对JClass('edu.stanford.nlp.python.SUTimeWrapper')的调用,这是从jar加载类的请求。我建议检查服务器上的类路径和配置。在

可能的原因是(按可能性排序)

  1. jar文件不在服务器的类路径中。在
  2. jar文件是用比运行时环境更新的JDK编译的(尽管这应该会生成一个不同的异常)。在
  3. 类所依赖的某些jar文件丢失或版本错误。(这将在异常中生成一个不同的类名,因此不太可能。)
  4. jar文件本机部分的dll丢失或体系结构不正确。(稀有)

假设jar文件在服务器上,我建议检查JPype startJVM调用的初始化,看看jar的路径是否正确。还可以使用print(jpype.java.lang.System.getProperty('java.class.path'))检查加载的类路径,以查看本地计算机和服务器计算机之间是否存在差异。在

相关问题 更多 >