我正在尝试使用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
谢谢你,因为你说:一些罐子类依赖的文件丢失或版本错误。(这将在异常中生成一个不同的类名,因此不太可能。)
似乎在服务器上找不到包含
edu/stanford/nlp/python/SUTimeWrapper
的jar文件。失败的特定代码是对JClass('edu.stanford.nlp.python.SUTimeWrapper')
的调用,这是从jar加载类的请求。我建议检查服务器上的类路径和配置。在可能的原因是(按可能性排序)
假设jar文件在服务器上,我建议检查JPype
startJVM
调用的初始化,看看jar的路径是否正确。还可以使用print(jpype.java.lang.System.getProperty('java.class.path'))
检查加载的类路径,以查看本地计算机和服务器计算机之间是否存在差异。在相关问题 更多 >
编程相关推荐