我继承了一个大型 Java/Scala 代码库,它使用 Jython 与我们同样大型的 Python 代码库进行交互。事情进展顺利,直到大约三天前,我们所有的构建突然开始在 Jython 阶段失败,并显示消息:
RuntimeException: java.lang.RuntimeException: Method code too large!
事实证明,JVM 内部方法的大小有 65kb 的内部限制。最新版本的 Python 请求似乎是罪魁祸首,这是我们 Python 代码库的重要依赖项。我的猜测是最新版本在某处引入了一个非常大的类。
最明显的解决方案是将请求库版本固定到较早的版本。我是否应该固定我们 Python 代码的所有库版本(就像我在 Java 中所做的那样)?除了版本固定之外还有什么解决方法吗?我是不是冒了太大的风险?
最佳答案
我今天刚开始使用 Requests 库,遇到了这个问题。追踪到 Idna 库,特别是数据结构超过 Java 的 64 kb 类限制的 uts46data.py 文件(天哪,这是个愚蠢的事情)。
克隆了主仓库并在 https://github.com/METAVERO/idna 处进行了更正 在请求和 indna githubs 上留下注释。您可以查看我的更改并将它们合并到新的请求下载中。
关于java - Jython 是我的代码库中的负担吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40698143/