我已经让Jython解释器工作了。但是当从java 1.7u45更改为java 8时,它只在IDE中运行。
我的项目使用Jython2.5.3。所有标准的python模块都打包成一个zip文件并放在java类路径中。
现在Jython未能找到'os'报告:
Traceback (most recent call last):
File "a.py", line 36, in <module>
import b.c as c
File "c.py", line 1, in <module>
import os
File "__pyclasspath__/os.py", line 132, in <module>
ImportError: no os specific module found
我在从命令文件和IDE启动应用程序之间使用JVisualVM比较了VM设置。没有明显的差异。
我还将命令文件更改为使用JDK1.8.0(作为netbeans启动)而不是JRE1.8.0
我还更改了命令文件以运行IDE生成的.class文件,而不是生产jar
我还将“-XDebug”添加到命令文件版本以匹配IDE设置
使用VisualVM进行检查时:
= JVM完全相同,
= JVM参数正好相同(除了Netbeans有“Xrunjdwp”)
=系统属性几乎相同:
我不知道接下来要做什么/检查。希望有人有个主意。感谢
更新
似乎Jython内部变量'sys.builtin_module_names'是一个集合,内容在每个场景中都不同。
在IDE之外,'nt'和'jffi'缺失。
os.py引发异常“ImportError:找不到特定于os的模块”。
如果该集合不包含任何
更新2
发现它......原来Jython2.5.1混合了Jython2.5.3模块的拉链
答案 0 :(得分:1)
原来,Jython2.5.1解释器与Jython2.5.3的标准模块压缩混合
之前我有解释器版本和zip-of-standard-modules混合,但这次解释器有次要版本,我没有看到它。