我是 GWT 的 n00b。我想使用 RandomAccessFile 从文件中读取并显示在网页上。
我发现 GWT 客户端不支持 RandomAccessFile,要调用 java 函数,我们必须使用 JSNI。
我有一个 JSNI 函数,它调用具有 RandomAccessFile 代码的函数。当我运行 Web 项目时,出现以下错误,但页面已加载,并且我能够在文本框中看到文件内容。
错误:14:58:43.854 [ERROR] [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();