Jython - 在Java项目中使用Pygments

我试图通过包含Jython.jar在Java项目中使用Pygments。在我的Java项目中,我有
src/main/python
源目录,我将pygments文件放入pygments文件夹,因此它们最终出现在类路径中。现在我在src / main / python中创建了highlighter.py文件,其中包含以下内容:
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)
然后我定义了Java接口
Highlighter.java
public interface Highlighter {
    String colorize(String rawText, String lexer);
}
最后我创建了工厂类,使用
PythonInterpreter
highlighter.py
作为Jython对象公开,如此处所述 现在,当我运行这行代码时
Highlighter hl = (Highlighter) jf.getJythonObject(Highlighter.class.getName(), 
       "WEB-INF/classes/highlighter.py");
我得到PyException如下
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.2.5.0,就会发生这种情况。在2.1我不得不复制src / main / python下的Jython / Lib目录,但最后我失去了IOString模块 或者也许有更好的方法来实现我想要实现的目标?我很好奇是否有人能够在Java项目中使用Pygments。我非常感谢任何建议     
已邀请:
行。我想到了。几乎没有初学者错误,但如果你想知道如何让你的Java项目中的Pygments工作完整的教程链接 强调: 使用裸jython.jar是不够的。 将Jython / Lib添加到类路径不起作用。我最终解开了jython.jar,并将Lib目录+所有pygments文件添加到生成的结构中,然后再次震动它 工厂示例形式上面的链接是错综复杂的。更好的方法是使用Jython第10章 有关更改的highlighter.py,Highlighter.java和HighlighterFactory.java的示例,请参阅教程     

要回复问题请先登录注册