我有一个在用户下载并在本地打开的HTML文件中执行的applet(即URL栏上的file://
)。此applet有一个方法,可以从Web下载文件并将其存储在运行applet的目录内的目录中。在我的HTML文件中,我调用该函数来下载文件,但是当我第二次调用它时,为了下载另一个文件,我得到一个Error calling method on NPObject.
我在Java端没有任何错误(我让控制台打开并保持干净)。
这可能是什么问题?非常感谢你的帮助。下面是applet的代码。
import java.security.*;
import java.io.*;
import java.nio.channels.*;
import java.net.*;
public class EPPenDrive extends java.applet.Applet {
public final static String baseURL = "http://localhost/data/documents/";
public String downloadFile(final String filename) {
return (String)AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
try {
URL finalURL = new URL(baseURL + filename);
ReadableByteChannel rbc = Channels.newChannel(finalURL.openStream());
URL appletDir = getCodeBase();
FileOutputStream fos = new FileOutputStream(appletDir.getPath() + "documents/"+ filename);
fos.getChannel().transferFrom(rbc, 0, 1 << 24);
return 1;
} catch (Exception x) {
x.printStackTrace();
return null;
}
}
});
}
public void init() { }
public void stop() { }
}
答案 0 :(得分:0)
我发现了问题:run()
方法会在返回时阻止1.我将其更改为return null
,现在一切正常。 :)