理解如何使用Jython的问题
我刚开始学习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 能在当前目录找到你编译好的类所必需的。