我已经让jython的翻译在工作了。但是当从Java1.7u45改为Java8时,它只在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
我比较了使用jvisualvm从命令文件和ide启动应用程序的vm设置。没有明显的区别。
我还将命令文件改为使用jdk1.8.0(作为netbeans startsup)而不是jre1.8.0
我还将命令文件改为运行ide生成的.class文件,而不是生产jar。
我还将“-xdebug”添加到命令文件版本中,以匹配ide设置
使用visualvm检查时:
=jvm完全相同,
=jvm参数完全相同(除了netbeans有“xrunjdwp”之外)
=系统属性几乎相同:
“java.library.path”相同
“java.class.path”上的jar是相同的,尽管jar有不同的路径。
但是命令文件版本中缺少python.console.encoding=cp437(ide是如何引入这个版本的?)
user.dir不同
我不知道下一步该做什么。希望有人有主意。谢谢
更新
似乎jython内部变量'sys.builtin\u module\u names'是一个集合,每个场景的内容都不同。在ide外面,“nt”和“jffi”不见了。py引发异常“importerror:找不到特定于操作系统的模块”。如果集合不包含
posix公司
新台币
os2公司
总工程师
里斯科
伊波米
更新2
找到了。。结果发现jython2.5.1和jython2.5.3的一堆模块混合在一起
1条答案
按热度按时间polhcujo1#
结果发现jython2.5.1解释器与jython2.5.3标准模块的zip混合在一起
以前我把标准模块的解释器版本和zip混淆了,但是这次解释器的版本是次要的,我没有看到它。