【问题标题】:Is Jython a liability in my codebase?Jython 在我的代码库中是一种责任吗?
【发布时间】:2016-11-19 21:31:24
【问题描述】:

我继承了一个大型 Java/Scala 代码库,该代码库使用 Jython 与我们同样庞大的 Python 代码库进行交互。事情进展顺利,直到大约三天前,突然我们所有的构建都在 Jython 阶段开始失败,并显示以下消息:

RuntimeException: java.lang.RuntimeException: 方法代码太大!

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

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

【问题讨论】:

    标签: java python jvm python-requests jython


    【解决方案1】:

    我今天刚开始使用 Requests 库,遇到了这个问题。追踪到 Idna 库,特别是 uts46data.py 文件,其数据结构超过 Java 的 64 kb 类限制(这真是个愚蠢的事情)。

    克隆了主仓库并在https://github.com/METAVERO/idna 更正了它 在请求和 indna githubs 上留下注释。您可以查看我的更改并将它们合并到新下载的请求中。

    【讨论】:

    • 非常感谢!我克隆了您的分支,然后通过 jython setup.py install 安装,然后请求库构建现在完成。对于需要这样做的人,这里是克隆分支的代码: git clone -b johnabooth-jython27-fix github.com/METAVERO/idna.git
    猜你喜欢
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 2011-05-23
    相关资源
    最近更新 更多