2011-08-08 72 views
0

我有一个小程序在HTML文件中执行,用户在本地下载并打开(即URL地址栏上的file://)。这个小应用程序有一个方法,从web下载文件并将其存储在小程序正在运行的目录内的目录中。在我的HTML文件中,我调用函数来下载一个文件,它可以工作,但是当我第二次调用它时,要下载另一个文件,我得到一个Error calling method on NPObject.我没有在Java端发生任何错误(我打开了控制台并保持干净)。 这里有什么问题?非常感谢您的帮助。下面是applet的代码。Java小程序下载文件文件

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

我发现这个问题:如果返回1,我把它改成return null,现在一切正常run()方法将阻塞。 :)