java - 为什么我在使用 "from javax.mail import *"时无法解析 jython 中的公共(public) java 对象?

标签 java jython embedded-script

我不确定这是 jython 错误还是对使用 jython 2.5.2 导入 java 包/类的一些细微差别的误解。

我有一个 jython 类,它从 java 执行 jython 脚本。这些脚本之一只是发送邮件。

jython 脚本代码片段:

from javax.mail import *
from javax.mail.internet import *
from java.util import Properties

props = Properties()
props.put("mail.smtp.host", "path.mydomain.com")
session = Session.getInstance(props,None) # Session can't be resolved

因此,在尝试解析位于 javax.mail.Session 的 Session 时,我最终遇到了异常,并且应该由“from javax.mail import * 语句”覆盖

执行 jython 的 Java 类看起来有点像这样:

static {
    PythonInterpreter.initialize(System.getProperties(), new Properties(), new String[0]);
}

void run(String scriptPath){
    String script; 
    // script is read into this string here from path

    PythonInterpreter python = new PythonInterpreter(null, new PySystemState());
    try (
        python.exec(script);
    ) catch (PyException pyEx){
        // catch
    }
}

奇怪的是,如果我执行另一个带有显式导入的 jython 脚本,例如

from javax.mail import Session

然后就可以正常工作了,但它现在也能够解析之前脚本中的 session 。

我正在使用 Maven 存储库中 org.python 中的 jython-standalone,版本 2.5.2。这段代码在 2.1 中似乎运行得很好。当我使用“import *”时,也许最初无法创建包装器?

(我知道出于性能原因我应该进行显式导入,但是这个软件执行其他人的脚本,所以我试图让它同时工作。)

最佳答案

经过大量搜索,我发现这种行为实际上是一个错误:

http://bugs.jython.org/issue1383

关于java - 为什么我在使用 "from javax.mail import *"时无法解析 jython 中的公共(public) java 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9523276/

相关文章:

java - 尽管有流程布局,图像仍彼此堆叠?

python - 使用cmd将文件从windows传输到linux服务器

java - mssql 处理行返回相当尴尬

python - 自动化 PyDev 解释器设置

java - 如何从 Java 程序执行 Perl 脚本?

javascript - 从元素中删除/重置继承的 css

java - 为什么这个转换器需要类型转换?

java - 如何使用 Jersey 2.x 设置连接和读取超时?

java - 有没有办法合并这2个?