2013年11月11日(月) [長年日記]
■ [python][java] JythonをScriptEngine経由で使うとdatetimeモジュールが正しく動かない
Javaのスプリクティング機能とJython 2.5.3を使ってJavaから次のPythonスクリプト
import datetime d = datetime.date.today() print d print d.year print d.min
を実行すると、
2013-11-11 113 AttributeError: 'java.sql.Date' object has no attribute 'min' in <script> at line number 6
と出力される(Java側のコードは省略)。'java.sql.Date' だと?!
試しにスプリクティング機能を使わず、
% java -jar jython-standalone-2.5.3.jar script.py
のようにスクリプトを実行すると、
2013-11-11 2013 0001-01-01
と正しく動作した。
検索すると、
というJythonのissueが見つかった。2年以上前に報告されているけれど未だに直らないみたい。
このissueにあるように「del datetime.date.__tojava__」という行をPythonスクリプトに追加してからJavaのスクリプティング機能を使って実行すると、
datetime.date(2013, 11, 11) 2013 datetime.date(1, 1, 1)
と出力されるようになった。