Heat-Hazeの日記

ネット上で様々の有益な情報を発信する人に感謝。

JythonでJavaのパッケージのimportが失敗

standalone版JythonJavaのパッケージのimportが失敗したのでメモ。

Why does Jython refuse to find my Java package?

What is Package Scanning

どうもパッケージスキャンというものが関係しているらしい。 インストーラから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()