2016-11-19 37 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

相關問題