我是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