Jython与JyNI扩展在不同Linux环境下的编译与应用探索

需积分: 13 1 下载量 192 浏览量 更新于2024-07-24 1 收藏 66KB DOCX 举报
"这篇文档主要讨论了如何在不同的操作系统环境下,使用Jython、JyNI以及CPython进行交互,特别是涉及到在LinuxMint Debian Edition 13 (32位)、Ubuntu 13.10 (64位)以及PowerLinux (Red Hat)上配置和运行JyNI alpha版本,并解决遇到的问题。" 在集成Jython,JyNI和CPython扩展时,开发者可能遇到一些挑战。Jython是一种Python解释器,它允许Python代码在Java平台上运行。JyNI(Java to Python Interface)则提供了一个桥梁,使得Jython能够调用用C语言编写的Python扩展模块,从而扩展Jython的功能。这个过程在不同的操作系统和Java环境中可能会有所不同。 在LinuxMint Debian Edition 13 (32位)上,使用Sun JDK 1.7和Python 2.7.3,尝试编译JyNI.alpha.2时遇到了系统库不兼容的问题。官方提供的`jyni-loader.sojyni.sojyni.jar`在该环境中无法正常工作。这可能是因为系统库版本与JyNI要求的版本不匹配,或者是JyNI自身的兼容性问题。 而在Ubuntu 13.10 (64位)系统中,使用OpenJDK 1.7和Python 2.7.3,成功编译了JyNI.src并生成了`jyni-loader.sojyni.sojyni.jar`以及`DemoExtension.so`。通过Jython和JyNI,可以调用`DemoExtension`,并且得到了与CPython相同的结果。这表明在64位Ubuntu环境下,JyNI和C扩展的集成是成功的。 在PowerLinux (Red Hat)上,使用IBM Java 7和相同的Python及Jython版本,虽然能够成功编译JyNI,但在执行阶段遇到了问题。首先,IBM的Java不支持`classpath`中添加`.so`文件,这导致Jython解析器无法正常启动。其次,使用`javaembedcallJyNI`虽然可以执行,但`JyNIDateTime`模块存在异常,可能因为额外的网址信息或者其他程序错误。 在进行JyNI的编译时,确保有以下组件是必要的: 1. Python-dev 2.7:提供Python的头文件和开发库,用于编译C扩展。 2. JyNI alpha 2:这是要集成的特定版本。 3. JDK:Java开发工具包,用于编译和运行Java代码。 4. GCC:GNU Compiler Collection,用于编译C/C++代码。 在不同平台上的实验结果表明,JyNI的兼容性和稳定性可能因环境而异,尤其是在处理C扩展时。对于开发者来说,理解这些差异并适配不同的系统环境是成功集成的关键。同时,解决特定Java版本和库的兼容性问题也是部署JyNI时不可忽视的环节。