Jsoup が Wiki ページをフェッチし、それを解析してテキストを検索し、そのテキストをボタンに配置する GWT で単純なアプリを実行しようとしています。Jsoup jar ファイルを必要なフォルダーに配置しました (ここで確認できるように:)
コードの後半でこれらの Jsoup 型変数を使用してもエラーが表示されないため、インポートは正常に機能しています。しかし、まだここに見られるようにエラーが発生しています:
誰が私がどこで間違っているのか教えてもらえますか?
Jsoup は、サーバー側処理 jar です。GWT ポートがありません!!!
クライアント側で使用するには、フォークしてGWT互換コードに移植する必要があります(GWTでサポートされていないAPIを使用する場合は不可能です)。
代わりに、サーバー側でのみ使用してみてください。wiki ページを処理し、テキスト文字列をクライアント側に送信します。
GWT の同様のサードパーティ ライブラリ - http://code.google.com/p/gwt-html/
注: 常に維持されているわけではありません。したがって、理解できる場合にのみ使用してください。
Jsoupはサーバー側のライブラリであり、gwtコード(にあるjavaクラス)では使用できませんcom.google.gwt.sample.stockwatcher.client
。
StockWatcherクラスに未使用のインポートがいくつかあります(import org.jsoup.helper.Validate
)、それらを削除する必要があります(Ctrl+ Shift+を押しますO)
最も簡単な方法は、gwtquery (別名 gquery) を使用することです。最良の場合、コードは次のようになります。
$(".myButton").load("file.html");
Gwtquery は gwt 用の jquery API のポートであり、jsoup は同じですが、jvm 用です。Gquery は適切に管理されています。
これは、スナップショットのコードを gquery に移植する例です。
// The target url should be in the same domain unless you configure CORS
GQuery.get("http://stats...", null, new Function() {
public void f() {
$("<div>" + getDataObject() + "</div>") // wrap the server response in a div
.find("p").each(new Function() {
public void f() {
System.out.println($(this).text());
}
});
}
});
Jsoup はサーバー側のライブラリとして設計されていますが、クライアント側で GWT を使用して実行するように変更することは不可能ではありません。これを行うには一部の機能を削除する必要があり、File または InputStream を使用するものはすべて削除する必要があります。私が選んだ IDE は IntelliJ Idea です。「使用箇所の検索」機能は、安全に削除できる機能と、エミュレートする必要がある他の機能を判断するのに非常に役立ちました。アドバイスとして、不要と思われる関数は、完全に削除するよりもコメント アウトした方がよいでしょう。詳しく調べてみると、実際にはその関数を変更またはエミュレートする必要があることがわかる場合があります。
私がエミュレートしたクラスまたは関数は次のとおりです。
代替品:
私の作品を受け取りたい場合は、ここからダウンロードできます:
http://www.mediafire.com/download/b3le77rrvc33vpa/Jsoup.zip
免責事項:このファイルは、上記で概説した手順の参照として使用できます。 、しかし、GWT と互換性のないコードを削除するプロセスのどこかで、XSS 攻撃の可能性が導入されていないことを保証することはできません。このようなエラーを見つけた場合は、お知らせください。