是因为你的java.policy没有配置好
Policy文件的格式
----为了能够更好地理解下面的内容,建议在阅读时参照 \jdk1.2\jre\lib\security\java.policy文件和\jdk1.2\jre\lib\security\java.security文件的内容。 
----Policy文件的语法格式与说明 ----一个Policy文件实质上是一个记录列表,它可能含有一个 “keystore”记录,以及含有零个或多个“grant”记录。其格式如下: keystore “some_keystore_url", “keystore_type";grant [ SignedBy “signer_names" ] [ , CodeBase “URL" ] {
    Permission permission_class_name [ “target_name"  ] 
               [ , “action"] [, SignedBy “signer_names" ];
    Permission ...
};----(1)“keystore"记录 ----一个keystore是一个私有密钥(private keys)数据库和相应的数字签名,例如X.509证书。Policy文件中可能只有一条keystore记录(也可能不含有该记录),它可以出现在文件中grant记录以外的任何地方。Policy配置文件中指定的 keystores用于寻找grant记录中指定的、签名者的公共密钥(public keys),如果任何grant 记录指定签名者(signer_names),那么,keystore记录必须出现在policy配置文件中。 ----“some_keystore_url"是指keystore的URL位置, “keystore_type"是指keystore的类型。第二个选项是可选项,如果没有指定,该类型则假定由安全属性文件(java.security)中的“keystore.type"属性来确定。keystore类型定义了 keystore信息的存储和数据格式,用于保护keystore中的私有密钥和keystore完整性的算法。 Sun Microsystems支持的缺省类型为“JKS”。 ---- (2)“grant"记录 ----在Policy文件中的每一个grant记录含有一个CodeSource (一个指定的代码)及其permission(许可)。 ----Policy文件中的每一条grant记录遵循下面的格式,以保留字“grant”开头,表示一条新的记录的开始,“Permission”是另一个保留字,在记录中用来标记一个新的许可的开始。每一个grant记录授予一个指定的代码(CodeBase)、一套许可(Permissions)。 ----permission_class_name必须是一个合格并存在的类名,例如java.io.FilePermission,不能使用缩写(例如,FilePermission)。 ----target_name用来指定目标类的位置,action用于指定目标类拥有的权限。 ----target_name可以直接指定类名(可以是绝对或相对路径)、目录名,也可以是下面的通配符: directory/*  目录下的所有文件
*     当前目录的所有文件
directory/-  目录下的所有文件,包括子目录
-      当前目录下的所有文件,包括子目录
<< ALL FILES >>文件系统中的所有文件----对于java.io.FilePermission,action可以是:read, write, delete和execute。 ----对于java.net.SocketPermission,action可以是:listen, accept,connect,read,write。 ---- (3)Policy文件中的属性扩展(Property Expansion)属性扩展与shell中使用的变量扩展类似,它的格式为:
“${some.property}" ----实际使用的例子为:
permission java.io.FilePermission
“${user.home}", “read"; ----“${user.home}"的值为“d:\Project",因此,下面的语句和上面的语句是一样的:
permission java.io.FilePermission “d:\Project ", “read"; 例如
grant {
    permission java.net.SocketPermission "*:8080", "connect,accept";
};