ソース配布からのビルド

 ソース配布からのビルド方法はアーカイブの中に書かれていますが、 結構複雑なので諦めて、Eclipseにorg/python以下をインポートしてビルドする方法で簡単に作れました。 必須のアーカイブ(External Jar File)は、

  1. Apache Ant(ant.jar)。これはant.apache.orgから入手してもよいですが、 私はJakarta Tomcat 5.0に付属のant.jarを使用しました。
  2. Servlet APIのJARファイル(servlet-api.jar)。例えば、Jakarta Tomcat 5.0 のcommon/libに入っています。
このほか、GNU java-readline library を使用しているソースもありますが、これはWindowsではビルドできないので、 そのままにしておきます (readline libraryがないためにエラーになったソースはエラーのままにしておき、 その他のクラスファイルだけをjarコマンドでアーカイブする)。
 ビルドできたら、クラスファイルをjarコマンドでアーカイブし、jython.jarなどの名前にして、 使います。


Jythonの文字化けの問題

 Jython 2.2a0のPy.java(org.python.core.Py)に、 バイト列のエンコーディング変換を適切に行えないため非推奨になっているクラス、 java.io.StringBufferInputStreamを使っているために、 PythonInterpreter#exec(String)を実行すると文字化けするケースがありますが、 次のように書き換えると解消できます。 (compile_flags(String, String, String, CompileFlags)メソッドの抜粋です)

    public static PyCode compile_flags(String data, String filename,
                                       String type,CompilerFlags cflags)
    {
/*
 *      return Py.compile_flags(
 *          new java.io.StringBufferInputStream(data+"\n\n"),
 *                        filename, type,cflags);
 */
        data += "\n";
        InputStream is = null;

        /* use JAVA VM's default file encoding */
        String encoding = System.getProperty("file.encoding");
        if(encoding != null){
            try {
                is = new ByteArrayInputStream(data.getBytes(encoding));
            } catch(UnsupportedEncodingException ex){ }
        }
        if(is == null){
            is = new ByteArrayInputStream(data.getBytes());
        }
        return Py.compile_flags(is, filename, type, cflags);
    }

セクションのサブメニューに戻る
(first uploaded 2004/04/25 last updated (not ever))