2011-04-26 33 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

相关问题