2010-11-29 12 views
1

私はPygmentsをJavaプロジェクトでJython.jarを使用して使用しようとしています。私のJavaプロジェクトでは、src/main/pythonソースディレクトリを持っています。pygmentsファイルをpygmentsフォルダに配置して、クラスパスになります。その後、私はHighlighter.javaJython - JavaプロジェクトでPygmentsを使用

public interface Highlighter { 
    String colorize(String rawText, String lexer); 
} 

Javaインタフェースを定義し、最後に私が公開しPythonInterpreterを使用するファクトリクラスを作成し

import sys 
sys.path.append('WEB-INF/classes') 
from pygments import highlight 
from pygments.lexers import get_lexer_by_name 
from pygments.formatters import HtmlFormatter 

class Highlighter: 
    def colorize(code, lexername): 
     lexer = get_lexer_by_name(lexername, stripall=True) 
     formatter = HtmlFormatter(linenos=True, cssclass="source") 
     return highlight(code, lexer, formatter) 

:今、私は、次の内容ではsrc /メイン/ Pythonでhighlighter.pyファイルを作成しましたJythonのオブジェクト今as described here

、などhighlighter.py私はこのコード行を実行したときに

Highlighter hl = (Highlighter) jf.getJythonObject(Highlighter.class.getName(), 
     "WEB-INF/classes/highlighter.py"); 

Traceback (most recent call last): 
File "WEB-INF/classes/highlighter.py", line 3, in 
    from pygments import highlight 
LookupError: no codec search functions registered: can't find encoding 

私はJythonのvを使用する場合、これが発生し、次のように私はPyExceptionを得る。2.5.0。 2.1ではsrc/main/pythonの下にJython/Libディレクトリをコピーしなければならなかったが、IOStringモジュールがなくなってしまった。

達成しようとしているものを達成するためのよりよい方法があるだろうか?誰かがJavaプロジェクトでPygmentsを使用できるかどうか不思議です。私は何かアドバイスをいただければ幸いです。

+0

'何が含まれてsys.path'んを参照してください? –

+0

これを述べると、sys.path.append( 'WEB-INF/classes')をhighlighter.pyに追加しました。テスト – Bostone

+0

今私は別の問題があります - 私は元の投稿を編集しました – Bostone

答えて

1

大丈夫です。私はそれを考え出した。いくつかの初心者ミスをしたが、あなたのJavaプロジェクトでPygmentsを機能させるためにどのように思っている場合は、ここでfull tutorial link

のハイライトです:裸jython.jarを使用して

  • が不十分であるが。
  • クラスパスにJython/Libを追加しても機能しません。私はjython.jarを解凍して、Libディレクトリ+すべてのpygmentsファイルを結果の構造体に追加してから再度びっくりしました。
  • 上記のリンク先の例は複雑です。もっと良い方法が変更されたhighlighter.pyの例についてはJythonのブックchapter 10
  • を使用することで、Highlighter.javaとHighlighterFactory.javaはチュートリアル
+0

そして、それは地獄のように実行します。放棄されましたが、このチュートリアルはJava WebアプリケーションでJythonを一般的にセットアップするのに適しています – Bostone

+0

こんにちは、10〜20行のコードスニペットのパフォーマンスはどうでしたか? –

+0

@ダーレンそれは約200-300行に受け入れられました – Bostone

関連する問題