java - Jython 是我的代码库中的负担吗?

标签 java python jvm python-requests jython

我继承了一个大型 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/

相关文章:

java - 组织.hibernate.MappingException : <mapping> element in configuration specifies no known attributes

python - 来自 keras : "Update your Conv2D call to the Keras 2 API" 的警告

python - 如何迭代字符串中的某些字符和其他字符在python中保持相同位置

Python 2.6 : Process local storage while using multiprocessing. 池

java - 始终避免 Java 中的递归方法?

java - 堆 vs 堆栈 vs 永久空间

java - 在 JTextArea 上调度关键事件不会移动插入符

java - EJB + JSF (Primefaces) Maven -> 在 EJB 中使用 primefaces jar -> 在 Jboss、Eclipse 上部署期间出现异常

java - Swing 组件的代码说明

JVM 实现 JRE