3
私は大きなJavaプロジェクトで作業しています.JythonスクリプトはJavaコードから解釈されます。私がまだ分かっていない理由で、関数、クラス、変数がすべてグローバルとして宣言されていない限り、Jythonスクリプトでは何も動作しません。 この問題を追跡するために、私はこの問題をこれまでに絞りました。以下は、次のとおりです。シンプルなJythonスクリプトがJavaから実行されない
Pythonスクリプト上で与えられたJythonスクリプトを試してみて、解釈するのJython 2.2のメソッドを使用していますjava -jar jython.jar script.py
Interpreter.java
を立ち上げたときにも実行されるJythonスクリプトscript.py
: #global aFunction # uncommenting this makes the script work from Java
def main():
aFunction()
def aFunction():
print 'aFunction() called'
main()
Javaクラス:
import java.io.File;
import org.python.core.PyException;
import org.python.core.PyStringMap;
import org.python.core.PySystemState;
public class Interpreter {
public static void main(final String[] args) {
final PyStringMap localNameSpace = new PyStringMap();
final PyStringMap globalNameSpace = new PyStringMap();
final File scriptFile = new File("../../jython/script.py");
PySystemState.initialize();
try {
org.python.core.__builtin__.execfile(scriptFile.getAbsolutePath(), globalNameSpace, localNameSpace);
} catch (final PyException pyException) {
pyException.printStackTrace();
}
}
}
Javaクラスの実行中に発生するエラーは次のとおりです。
Traceback (innermost last):
File "/opt/coflight/axel/workspace/essais/../../jython/script.py", line 12, in ?
File "/opt/coflight/axel/workspace/essais/../../jython/script.py", line 5, in main
NameError: aFunction
インタプリタがJythonスクリプトを実行できるようにJavaクラスを修正する方法についてのアイデアはありますか?ありがとう!
うん、!私のアプリケーションは '__builtin__'の呼び出しではなく、これを使うと思われました。 – Axel
同じことをスカラーで行うオプションはありますか? –
@EdwinVivekN:あなたは何を意味するのか分かりません。助けが必要な場合は、新しい質問をする必要があります。 – mzjn