我不确定这是一个 jython 错误还是对使用 jython 2.5.2 导入 java 包/类的一些细微差别的误解。
我有一个从 java 执行 jython 脚本的 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 * statement”中
执行 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 存储库版本 2.5.2 中使用来自 org.python 的 jython-standalone。这段代码在 2.1 中似乎工作得很好。当我使用“import *”时,也许它最初无法创建包装器?
(我知道出于性能原因我应该有明确的导入,但是这个软件执行其他人的脚本,所以我试图让它同时工作。)