我是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();
发表一些代码;你说你在做什么是不可能的你描述它的方式。你想完成的事情根本不清楚。 – 2011-04-26 20:31:01
添加代码..谢谢 – 2011-04-26 21:39:35
这不是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