2011-04-26 65 views
0

我是GWT中的n00b。 我想使用RandomAccessFile從文件中讀取並顯示在網頁上。JSNI:GWT:沒有源代碼可用於java.io.RandomAccessFile類型

我知道GWT客戶端不支持RandomAccessFile,並且要調用java函數,我們必須使用JSNI。

我有一個JSNI函數調用具有RandomAccessFile代碼的函數。 當我運行Web項目時出現錯誤,但頁面已加載,並且我能夠在文本框中看到文件內容。

錯誤: 14:58:43.854 [錯誤] [monitoringactivity]第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();

+0

發表一些代碼;你說你在做什麼是不可能的你描述它的方式。你想完成的事情根本不清楚。 – 2011-04-26 20:31:01

+0

添加代碼..謝謝 – 2011-04-26 21:39:35

+0

這不是JSNI打算如何使用。標記爲'native'的東西應該是Javascript代碼,而不是Java。你錯過了JSNI的觀點,JSNI的意義在於你可以注入一些GWT不會產生或騷擾的手動編碼的Javascript。 [JSNI編碼基礎](http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html)。您無法使用Javascript/GWT從瀏覽器訪問本地文件系統對象。 – 2011-04-26 22:03:44

回答

3

全部File相關功能在GWT中不支持,只能在服務器端使用。 GWT被交叉編譯爲Javascript並在瀏覽器上運行,您只能訪問在瀏覽器中運行的Javascript有權訪問,這在文件系統上是沒有的。

JSNIis for creating Javascript "native" code和GWT編譯器使用它,它有什麼做調用Java代碼。

您必須編寫代碼,用於從服務器上執行的網站上的文件讀取數據,並以某種方式使用RPC將該數據發送到瀏覽器。

的JavaScript和DOM提供潛在 惡意創作者 提供的腳本可以通過網絡客戶端 計算機上運行。瀏覽器作者 使用兩個 限制包含此風險。首先,腳本在 沙箱中運行,其中他們只能執行 與網絡相關的操作,而不是 通用編程任務,如 操縱文件。

+0

因此,我的用例將是什麼變通?謝謝.. – 2011-04-26 20:29:04

+0

這不是GWT的問題。沒有解決方法,您無法在瀏覽器中使用JavaScript訪問文件系統。 – 2011-04-26 20:29:49

+0

但奇怪的是,我能夠看到文件evn的內容,雖然它會拋出這個錯誤...另外,當你說服務器端,我怎麼能實現它,所以我可以在頁面上顯示..謝謝 – 2011-04-26 20:32:44

相關問題