私はPygmentsをJavaプロジェクトでJython.jarを使用して使用しようとしています。私のJavaプロジェクトでは、src/main/python
ソースディレクトリを持っています。pygmentsファイルをpygmentsフォルダに配置して、クラスパスになります。その後、私はHighlighter.java
Jython - 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を使用できるかどうか不思議です。私は何かアドバイスをいただければ幸いです。
'何が含まれてsys.path'んを参照してください? –
これを述べると、sys.path.append( 'WEB-INF/classes')をhighlighter.pyに追加しました。テスト – Bostone
今私は別の問題があります - 私は元の投稿を編集しました – Bostone