2

何らかの理由でgwtでスキャナーを使用しようとすると、次のエラーが発生します。

No source code is available for type java.util.Scanner; did you forget to inherit a required module?

周りを見回したところ、「タイプxxxxのソースコードがありません」というエラーは、Javaタイプに相当するJavascriptタイプがないことが原因のようです。スキャナーはGWTで使用できませんか?

これが私のコードの抜粋です:

import java.util.Scanner;
...
public void submit(){
    String text = editor.getEditor().getText();
    Scanner input = new Scanner(text);
    while(input.hasNextLine()){
        String line = input.nextLine();
        if(line.contains("//")){
            cInfo.setDone(false);
            cInfo.setCode(text);
            return;
        }
        cInfo.setDone(true);
        cInfo.setCode(text);
        }
    }

}
4

2 に答える 2

7

java.util.Scannerは、GWTJREエミュレーションの一部ではありません。エミュレーションの内容の詳細な概要が必要な場合は、ここにドキュメントへのリンクがあります。

https://developers.google.com/web-toolkit/doc/latest/RefJreEmulation#Package_java_util

于 2012-07-18T18:41:06.060 に答える
1

あなたのコード(少なくともあなたの質問の現在のバージョンのコード)はおそらく[*]と同等です

public void submit() {
  String text = editor.getEditor().getText();

  if ("".equals(text))
    return;

  cInfo.setDone(!text.contains("//"));
  cInfo.setCode(text);
}

しかし、これは実際にはやりたいことではないかもしれないと感じています(またはそうですか?)

クライアント側で文字列を分割する必要がある場合は、通常、GuavaのSplitterクラスをお勧めします。そのメソッドのほとんどはGwtCompatibleであり、(CharMatcher、Joinerなどと一緒に)Javaコードのクライアント側とサーバー側の両方で使用するのは素晴らしいことです。

[*]setDoneとsetCodeが副作用のない単純なセッターであると仮定します

于 2012-07-18T21:02:34.213 に答える