【问题标题】:Getting gwt-syntaxhighlighter to work让 gwt-syntaxhighlighter 工作
【发布时间】:2012-10-09 08:45:06
【问题描述】:

我一直在努力让 Syntaxhighlighter 的 GWT 包装器工作。我从http://code.google.com/p/gwt-syntaxhighlighter/ 得到了这些库,但它们似乎都没有工作。我开始怀疑是否是我对使用外部库的理解如此糟糕,或者它是否确实构建了糟糕的 JAR。有没有人设法使用这个? gwt-syntaxhighlighter-1.1.1-gwt-standard.jar 应该是我运行它所需的全部,缺少源和 Highlighter.gwt.xml 文件。通过结合其他 JAR (http://cl.ly/K1N4) 的内容,我设法遇到了以下异常,我现在陷入困境:

http://www.pastit.dotcloud.com/131

我的设置如下:我的构建路径上有自定义构建的 jar。我的 MainPage.gwt.xml 包含以下行:

<inherits name='com.alexgorbatchev.syntaxhighlighter.Highlighter'/>

在我的代码中的某处,我执行以下操作:

final Highlighter highlighter = new Highlighter(Brushes.XML());
highlighter.setText(xml);
final VerticalPanel xmlPanel = new VerticalPanel();
xmlPanel.add(highlighter);

一旦到达上述行,就会抛出我提供的异常。非常感谢任何形式的帮助!

【问题讨论】:

    标签: java gwt syntaxhighlighter


    【解决方案1】:

    我也尝试使用 gwt-syntaxhighlighter,但由于缺乏文档,我更喜欢编写 JavaScript 解决方案的包装器。

    我在http://alexgorbatchev.com/SyntaxHighlighter/download/ 下载了最新版本的 .js 文件。

    然后在“client”(不在)文件夹的同一级别创建一个名为“public”的文件夹,并从 zip 文件中添加“script”和“style”。

    然后我在我的项目 *.gwt.xml 中包含了我的所有需求

    <!-- Base CSS SyntaxHighlighter -->
    <stylesheet src="styles/shCore.css"/>
    
    <!-- Eclipse Syntax Theme -->
    <stylesheet src="styles/shThemeEclipse.css"/>
    
    <!-- Base JS SyntaxHighlighter -->
    <script src="scripts/shCore.js"/>
    
    <!-- Extension for each wanted language to support -->
    <script src="scripts/shBrushJava.js"/>
    <script src="scripts/shBrushXml.js"/>
    

    然后我创建了一个画笔工厂

    public class BrushFactory {
        public native JavaScriptObject newJavaBrush() /*-{
            return new $wnd.SyntaxHighlighter.brushes.Java();
        }-*/;
    
        public native JavaScriptObject newXmlBrush() /*-{
            return new $wnd.SyntaxHighlighter.brushes.Xml();
        }-*/;
    }
    

    这是一个 JSNI 类,它使用 SyntaxHighlighter 实现从字符串到 HTML 语法格式字符串的转换。

    public class SyntaxHighlighter {
        public static native String highlight(String code, JavaScriptObject brush, boolean toolbar) /*-{
            var params = {};
            params['toolbar'] = toolbar;
            brush.init(params);
            return brush.getHtml(code);
        }-*/;
    }
    

    最后我使用 GWT 中的 HTML 小部件输出字符串。

    String htmlCode = SyntaxHighlighter.highlight("YOUR_CODE_HERE", BrushFactory.newJavaBrush(), false);
    HTML html = new HTML();
    html.setHTML(htmlCode);
    

    我使用它,它就像一个魅力。此解决方案是使用该库的最简单、最快捷的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 2011-01-30
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多