And*_*rew 2 python java jython-2.7
我正在尝试使用 Jython 将一个小型 Python 脚本集成到我拥有的 Java 程序中。我似乎无法使用该javax.script包获取 python/jython 引擎。
我从这里获取了代码,并做了一些小的添加来生成:
andrew@asimov:~$ echo $CLASSPATH
/opt/jython/jython.jar:.
andrew@asimov:~$ java Engines
The following 2 scripting engines were found
Engine name: jython
Version: 2.7.0
Language: python
Engine supports the following extensions:
py
Engine has the following short names:
python
jython
=========================
Engine name: Rhino
Version: Rhino 1.7 release 4 2013 08 27
Language: ECMAScript
Engine supports the following extensions:
js
Engine has the following short names:
js
rhino
JavaScript
javascript
ECMAScript
ecmascript
=========================
python engine is null: true
js engine is null: false
andrew@asimov:~$
Run Code Online (Sandbox Code Playgroud)
我添加的代码是:
String[] engineNames = new String[] {
"python", "js"
};
for (String engineName : engineNames) {
ScriptEngine engine = manager.getEngineByName(engineName);
System.out.printf("%s engine is null: %s\n", engineName, (engine == null));
}
Run Code Online (Sandbox Code Playgroud)
为什么我得到的是 null python 引擎?
我遇到了这个 bug,它似乎表明那里有(或曾经有)一个 jython-engine.jar,但如果我能找到它,我就被绞死了。
根据这个问题,使用jython-standalone.jar而不是jython.jar返回一个非空引擎:
andrew@asimov:~$ export CLASSPATH=jython-standalone-2.7.0.jar:.
andrew@asimov:~$ java Engines | tail -11
Engine name: jython
Version: 2.7.0
Language: python
Engine supports the following extensions:
py
Engine has the following short names:
python
jython
=========================
python engine is null: false
javascript engine is null: false
andrew@asimov:~$
Run Code Online (Sandbox Code Playgroud)
(在我的 pom.xml 中,我使用了<artifactId>jython-standalone</artifactId>)
很好奇,但至少我可以继续前进。
| 归档时间: |
|
| 查看次数: |
1075 次 |
| 最近记录: |