【问题标题】:Using the original python packages instead of the jython packages使用原始 python 包而不是 jython 包
【发布时间】:2019-08-10 21:15:17
【问题描述】:

我正在尝试使用 python 后端和 java GUI 创建一个混合应用程序,为此我使用 jython 从 GUI 访问数据。 我使用标准的 Python 3.7.4 虚拟环境编写了代码,它“完美”地工作。但是当我尝试在 jython 上运行相同的代码时,它不起作用,所以在 jython 中,像 threading 这样的一些包似乎被 java 功能覆盖。

我的问题是如何在 jython 环境中使用例如来自 python 的 threading 包?

这里是错误:

线程 Thread-1 中的异常:Traceback(最近一次调用最后一次): _Thread__bootstrap 中的文件“/home/dexxrey/jython2.7.0/Lib/threading.py”,第 222 行 自我运行() self._target(*self._args, **self._kwargs)

【问题讨论】:

    标签: java python jython


    【解决方案1】:

    既然您已经解耦了应用程序,即使用 python 作为后端,使用 java 作为 GUI,为什么不坚持这样做并在后端和前端之间建立一个通信层,这个层可以是 REST 或任何消息传递框架。

    【讨论】:

    • 这也是我想到的,它仍然是一个可行的选择。后端可以使用 xmls 与前端通信,但是我必须在两个层中都做监听器来监听文件更改,因为没有其他方法可以从一层调用动作到另一层。这就是为什么我想避免这种情况。
    • 好吧,我不知道你的应用程序要求和范围,但听众不是我建议你与之交流的方式,而是让后端进行监听并通过 API 公开听众的动作端点
    【解决方案2】:

    我认为您可能面临的一个问题是您在 Jython 2.7.0(兼容~Python 2.7)上运行,但您的代码是为 CPython 3.7.4 编写的。所以你可能会遇到 Python 2 vs 3 的问题。

    Jython 中的线程模块确实与 CPython 不同,即它利用了 JVM 线程。然而,其意图是 API 与 Python 2.7 代码兼容,因此如果它不运行,则应将其视为错误。

    我的第一个建议是尝试 Jython 2.7.1,它包含超过 2.7.0 https://www.jython.org/download 的许多修复,但我怀疑它仍然可能无法正常工作。检查您的代码是否在 CPython 2.7 https://www.python.org/downloads/release/python-2716/ 上运行,如果可以,那么这听起来像是 Jython 错误。在https://bugs.jython.org/https://bugs.jython.org/打开一张带有详细信息的工单以复制

    【讨论】:

      猜你喜欢
      • 2012-07-02
      • 1970-01-01
      • 2014-07-10
      • 2016-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 2011-05-30
      相关资源
      最近更新 更多