我写了一个applet:/*******************************************************888/
import java.awt.HeadlessException;  
import java.io.File;  
import java.lang.reflect.Method;  
import java.net.URL;  
import java.net.URLClassLoader;  
import java.security.AccessControlContext;  
  
import javax.swing.JApplet;  
import javax.swing.JFileChooser;  
import javax.swing.filechooser.FileFilter;  
    
  
  
public class TestApplet extends JApplet {  
  
  
    public TestApplet() {  
        super();  
    }  
    public void destroy() {  
      
    }  
    public String getAppletInfo() {  
        return "This is my default applet created by Eclipse";  
          
    }  
  
    public void init() {  
    }  
    public void start() {  
          
        System.out.println(TestApplet.class.getProtectionDomain());  
        try{  
        JFileChooser jarFileChooser = new JFileChooser();  
        jarFileChooser.setCurrentDirectory(new File("C:\\jar"));  
        FileFilter ff = new FileFilter() {  
            public boolean accept(File f) {  
                if (f.isDirectory() || f.getName().endsWith(".jar")  
                        || f.getName().endsWith(".zip")) {  
                    return true;  
                }  
                return false;  
            }  
  
            public String getDescription() {  
                return "jar文件或者zip文件,   可以多选";  
            }  
  
        };  
        jarFileChooser.setFileFilter(ff);  
        jarFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);  
        jarFileChooser.setMultiSelectionEnabled(true);  
        int r = jarFileChooser.showOpenDialog(null);  
        if (r != JFileChooser.APPROVE_OPTION) {  
            System.exit(0);  
        }  
  
        String className ="com.Start";  
  
  
        String paramStr = "";  
  
        String[] params = paramStr == null ? new String[0] : paramStr  
                .split(" ");  
  
        File[] jarFiles = jarFileChooser.getSelectedFiles();  
        URL[] jarFileUrls = new URL[jarFiles.length];  
        for (int i = 0; i < jarFileUrls.length; i++) {  
            jarFileUrls[i] = jarFiles[i].toURL();  
        }  
  
        URLClassLoader classLoader = new URLClassLoader(jarFileUrls,  
                TestApplet.class.getClassLoader()); // ***  
        Class mainClass = Class.forName(className, true, classLoader);  
        System.out.println(mainClass.getProtectionDomain());  
        Method mainMethod = mainClass.getMethod("main",  
                new Class[] { String[].class });  
        mainMethod.invoke(null, new Object[] { params });  
        }  
        catch(Exception e )  
        {  
            e.printStackTrace();  
        }  
    }  
    public void stop() {  
          
    }  
      
  
}  
/*****************************************************************************8/
 
在这个applet中使用类加载器加了一个jar包b.jar。这个jar包里面只有一个类,代码如下:/***************************************************************************8/
package com;
public class Start{  
        public static void main(String[] args) {  
          
          
        System.out.println(System.getenv());    
          }  
}  
 
/***************************************************************************8/
然后我把b.jar加上了签名,再把TestApplet打包为a.jar加了签名,并把它加到html中去
<!-------------------------------------------------------------------------->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  
  <body>  
      
    <applet codebase="."   
            code="TestApplet.class"   
            name="TestApplet"   
            width="320"   
            height="240"   
            archive="a.jar">  
  
    </applet>  
  </body>  
</html>  <!-------------------------------------------------------------------------->
 启动tomcat,键如这个页面的地址,访问到Start的main方法的时候报如下错误:
Java代码 
java.lang.reflect.InvocationTargetException  
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)  
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)  
    at java.lang.reflect.Method.invoke(Unknown Source)  
    at TestApplet.start(TestApplet.java:141)  
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)  
    at java.lang.Thread.run(Unknown Source)  
Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission getenv.*)  
    at java.security.AccessControlContext.checkPermission(Unknown Source)  
    at java.security.AccessController.checkPermission(Unknown Source)  
    at java.lang.SecurityManager.checkPermission(Unknown Source)  
    at java.lang.System.getenv(Unknown Source)  
    at com.wisii.component.startUp.Start.main(Start.java:338)  
    ... 7 more  
 而我在
 而我在TestAplet中的System.out.println(mainClass.getProtectionDomain());  
 
打印出来的内容是
ProtectionDomain  (http://192.168.0.23:8080/wdems2/a.jar <no signer certificates>)  
 sun.plugin2.applet.Applet2ClassLoader@5d173  
 <no principals>  
 java.security.Permissions@1c0ec97 (  
 (java.lang.RuntimePermission accessClassInPackage.sun.audio)  
 (java.lang.RuntimePermission stopThread)  
 (java.util.PropertyPermission java.vm.version read)  
 (java.util.PropertyPermission java.vendor.url read)  
 (java.util.PropertyPermission java.vm.name read)  
 (java.util.PropertyPermission browser.version read)  
 (java.util.PropertyPermission http.agent read)  
 (java.util.PropertyPermission java.version read)  
 (java.util.PropertyPermission browser read)  
 (java.util.PropertyPermission file.separator read)  
 (java.util.PropertyPermission javaws.* read,write)  
 (java.util.PropertyPermission browser.vendor read)  
 (java.util.PropertyPermission java.specification.vendor read)  
 (java.util.PropertyPermission line.separator read)  
 (java.util.PropertyPermission java.vm.specification.version read)  
 (java.util.PropertyPermission javapi.* read,write)  
 (java.util.PropertyPermission java.vm.specification.vendor read)  
 (java.util.PropertyPermission javaplugin.version read)  
 (java.util.PropertyPermission os.name read)  
 (java.util.PropertyPermission javaplugin.vm.options read)  
 (java.util.PropertyPermission java.vm.vendor read)  
 (java.util.PropertyPermission path.separator read)  
 (java.util.PropertyPermission java.specification.name read)  
 (java.util.PropertyPermission os.version read)  
 (java.util.PropertyPermission os.arch read)  
 (java.util.PropertyPermission jnlp.* read,write)  
 (java.util.PropertyPermission java.class.version read)  
 (java.util.PropertyPermission java.vendor read)  
 (java.util.PropertyPermission java.vm.specification.name read)  
 (java.util.PropertyPermission java.specification.version read)  
 (java.net.SocketPermission 192.168.0.23 connect,accept,resolve)  
 (java.net.SocketPermission localhost:1024- listen,resolve)  
 (java.security.AllPermission <all permissions> <all actions>)  
)  
 两个jar包都是加过签名的,所以在applet里面启用的类加载器所执行的程序的权限究竟是什么呢
 
如果我希望给它定以本地文件的读写权限应该怎么设置?