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

发布于 2024-11-27 11:13:31 字数 388 浏览 2 评论 0原文

我需要在python中使用java代码来减少,所以我选择了Jython。 一段时间后,我设法弄清楚如何运行我的代码,但我遇到了最奇怪的事情。 当我

from vohmm.corpus import Token;

大部分时间写作时,我会得到一个

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

但是,当我再次执行此操作时(有时在 3 次尝试后),它将导入该类,错过一些方法,但我可以使用该类。

任何人都可以弄清楚这一点吗?

谢谢,埃亚尔

I needed to use a java code in python to reduce, so I chose Jython.
after a while, I've managed to figure out how to run my code, but I'm having the strangest thing.
When I write

from vohmm.corpus import Token;

most of the time, I'll get a

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

but, when I'll do it again(sometimes after 3 attempts) it will import the class, missing out some methods, but I'm able to use the class.

any one can figure this out?

thanks, Eyal

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

少女净妖师 2024-12-04 11:13:31

Jython 在启动时使用缓存机制,基本上会遍历类路径中的所有 jar 并构建包装器。在某些情况下,可能会找到并包装特定的类,而在其他情况下则不会;也许你有很多罐子,并且遇到了一些递归错误或限制。

在任何情况下,我都会确保包含该特定类的 jar 位于类路径的开头,并显式声明(即使用 -cp C:\path\to\my.jar;%CLASSPATH% ),以便 jython每次都会很快拿起它。

当然,这是假设您每次都以相同的方式启动 jython。如果情况并非如此,请检查您正在使用的启动参数(包括起始目录)在所有情况下是否相同。

Jython uses a caching mechanism when starting up, basically going through all jars in your classpath and building wrappers. It's possible that in some cases that particular class is found and wrapped, and in others it isn't; maybe you have a lot of jars and you're hitting some recursion bug or limit.

In any case, I'd make sure that the jar including that specific class is at the beginning of your classpath, explicitly declared (i.e. using -cp C:\path\to\my.jar;%CLASSPATH% ), so that jython will pick it up quickly every time.

This, of course, assuming you launch jython in the same way every time. If that's not the case, check that the launching parameters that you are using, including the starting directory, are the same in all cases.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文