2

私は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);

上記の行に達するとすぐに、私が提供した例外がスローされます。どんな種類の助けも大歓迎です!

4

1 に答える 1

3

また、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();
    }-*/;
}

これは、SyntaxHighlighterを使用してStringからHTML構文形式のStringへの変換を実装するJSNIクラスです。

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);

私はそれを使用し、それは魅力のように機能します。このソリューションは、ライブラリを使用するための最も簡単で最速の方法です。

于 2013-07-05T18:03:29.770 に答える