0

私は GWT の n00b です。RandomAccessFile を使用してファイルから読み取り、Web ページに表示したいと考えています。

GWT クライアントでは RandomAccessFile がサポートされておらず、Java 関数を呼び出すには JSNI を使用する必要があることがわかりました。

RandomAccessFile コードを持つ関数を呼び出す JSNI 関数があります。Web プロジェクトを実行すると、以下のエラーが発生しますが、ページが読み込まれ、テキスト ボックスにファイルの内容が表示されます。

エラー: 14:58:43.854 [エラー] [監視アクティビティ] 14 行目 java.io.RandomAccessFile 型のソース コードはありません。必要なモジュールを継承するのを忘れましたか?

誰でもこのエラーを修正するのを手伝ってくれますか?

この RandomAccessFile コードの実装は、クライアントと同じパッケージ内の別の Java ファイルにあります。gwt.xml ファイルに何か追加する必要はありますか?

コード:

package com.monitor.client;

import java.io.RandomAccessFile;

public class JsniExample {

static String res;

public  static String testRandomAccessFile()
        {


        try {
            // Connect 
            RandomAccessFile pWrite = new RandomAccessFile("/tmp/file1", "rw");
            String echoText = "Hello World\n";
            System.out.println("Write \n");
            // write 
            pWrite.write ( echoText.getBytes() );
            pWrite.close();

            RandomAccessFile pRead = new RandomAccessFile("/tmp/file2", "rw");
            System.out.println("read\n");
            // read response
            res = pRead.readLine();
            System.out.println("Response: " + res );
            pRead.close();

            } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            }
        return res;
    }



         public  static native String jsniCode()
         /*-{
                var res =  @com.monitor.client.JsniExample::testRandomAccessFile()();   
                    return res.toString();

        }-*/;

    }

onModuleLOad から呼び出しています: res = JsniExample.jsniCode();

4

1 に答える 1

3

関連するすべてのFile機能が GWT でサポートされているわけではなく、サーバー側でのみ使用できます。GWT は Javascript にクロス コンパイルされ、ブラウザー上で実行されます。ブラウザーで実行されている Javascript がアクセスできるものにのみアクセスできます。これは、ファイル システムには何もありません。

JSNI Javascript の「ネイティブ」コードを作成し、それを GWT コンパイラで使用するためのものであり、Java コードの呼び出しとは関係ありません。

Web サイト上にあるファイルから読み取り、サーバー上で実行され、RPC何らかの方法でそのデータをブラウザーに送信するコードを作成する必要があります。

JavaScript と DOM は、悪意のある作成者が Web 経由でクライアント コンピューター上で実行するスクリプトを配信する可能性を提供します。ブラウザーの作成者は、2 つの制限を使用してこのリスクを封じ込めます。まず、スクリプトは、ファイル操作などの汎用プログラミング タスクではなく、Web 関連のアクションしか実行できないサンドボックスで実行されます。

于 2011-04-26T20:27:52.880 に答える