jython java.lang.NoClassDefFoundError: org/json/simple/ JSONObject

5 投票
1 回答
2324 浏览
提问于 2025-04-16 22:37

我需要在Python中使用一些Java代码来进行处理,所以我选择了Jython。经过一段时间的摸索,我终于搞清楚了怎么运行我的代码,但遇到了一些奇怪的事情。

当我写

from vohmm.corpus import Token;

的时候,大部分时间我都会收到一个错误信息:

java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: org/json/simple/JSONObject

但是,当我再试一次(有时候要尝试三次),它就会成功导入这个类,虽然有些方法缺失,但我还是能使用这个类。

有没有人能帮我解决这个问题?

谢谢,Eyal

1 个回答

3

Jython在启动时会使用一种缓存机制,简单来说就是它会检查你所有的jar文件,并为它们创建一些包装。这样做的结果是,有时候它能找到并包装某个特定的类,而有时候又找不到;这可能是因为你有很多jar文件,导致出现了一些递归错误或者限制。

无论如何,我建议你把包含那个特定类的jar文件放在你的classpath的最前面,明确地声明出来(比如使用 -cp C:\path\to\my.jar;%CLASSPATH%),这样每次启动jython时,它就能快速找到这个类。

当然,这个前提是你每次启动jython的方式都是一样的。如果不是这样的话,检查一下你使用的启动参数,包括起始目录,确保在所有情况下都是一致的。

撰写回答