2016-11-19 25 views
3

我已经继承了一个使用Jython与我们同样庞大的Python代码库进行接口的大型Java/Scala代码库。事情顺顺当当走,直到大约三天前突然,那我们开始建立在Jython的阶段,未能与消息:Jython是否在我的代码库中有责任?

的RuntimeException:了java.lang.RuntimeException:法码偏大!

事实证明,JVM中的方法的大小存在65kb的内部限制。最新版本的Python请求似乎是罪魁祸首,这是我们的Python代码库的一个重要依赖。我的猜测是最新版本在某处引入了一个非常大的类。

最明显的解决方案是将请求库版本固定到较早版本。我是否应该固定我们Python代码的所有库版本(就像我在Java中所做的那样)?除版本固定外,是否还有其他解决方法?我的风险太大了吗?

回答

5

我刚碰巧开始使用Requests库,并且遇到了这个问题。追踪到Idna库,特别是uts46data.py文件,其数据结构超过了Java的64 kb类限制(man是一个愚蠢的东西)。

克隆了主要的回购股权,并在https://github.com/METAVERO/idna 纠正了它的请求和indna githubs左注。您可以查看我的更改并将它们合并到新的请求下载中。

+0

非常感谢!我克隆了你的分支,然后通过jython setup.py install进行安装,然后请求库构建完成。对于需要这样做的人,这里是克隆分支的代码:git clone -b johnabooth-jython27-fix https://github.com/METAVERO/idna.git – Kota

相关问题