理解如何使用Jython的问题

4 投票
1 回答
2347 浏览
提问于 2025-04-17 19:15

我刚开始学习Jython,遇到了一些实现上的问题。我查看了Jython 2.5自带的示例文件,但还是不太确定怎么用Jython来实现我想要的功能。

目前,我的Java代码正在作为一个进程运行一个Python服务器。这个Python服务器又启动了第二段Java代码作为一个子进程。我原本打算用Java NIO服务器替代这个Python服务器,但这让我遇到了很多麻烦,所以我才尝试使用Jython。我还想把这一切打包成一个.jar文件。

我尝试创建了一个简单的Python文件(print "Hello World")。它在Jython中可以运行,但当我尝试用Java运行它(在执行了jython -m compileall之后)时,系统提示找不到主函数。我猜我需要在我的Python代码中添加一些东西才能让它工作,但我不太确定该加什么。

编辑:我遇到的具体错误是-

Exception in thread "main" java.lang.NoClassDefFoundError: jythonTest
Caused by: java.lang.ClassNotFoundException: jythonTest
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: jythonTest.  Program will exit.

1 个回答

2

我觉得答案是 CLASSPATH。

hello.py

print "Hello"

我们来运行它

> python hello.py
Hello

> jython hello.py
Hello

编译(我用 py_compile 来编译单个文件)

> jython -m py_compile hello.py

java 来运行

> java -classpath d:\P\jython253\jython.jar;. hello$py
Hello

注意 classpath 中的点。这是让 Java 能在当前目录找到你编译好的类所必需的。

撰写回答