JythonでJavaのパッケージのimportが失敗
standalone版JythonでJavaのパッケージのimportが失敗したのでメモ。
Why does Jython refuse to find my Java package?
どうもパッケージスキャンというものが関係しているらしい。 インストーラからJythonをインストールした場合は上記のパッケージスキャンが働くためimprtにアスタリスク(*)を指定しても問題ないらしいが、standalone版Jythonではパケージスキャンが動かないのでパッケージを見つけることができずエラーとなる。回避するにはパッケージをクラス名まで指定すればOK。ちょっと面倒だがJythonがインストールされていない他のパソコンへstandalone版Jythonと一緒に自作のJythonプログラムをもっていく可能性がある場合は注意した方がよさそうだ。
# -*- coding: utf-8 -*- from __future__ import print_function #パッケージスキャナーが動いてない場合、下記のインポートはエラーとなる #from javax.imageio import * from javax.imageio import ImageIO def main(): Formats = ImageIO.getReaderFormatNames() for name in Formats : print(name) if __name__ == "__main__": main()