Java 8小程序问题(“Java.lang.RuntimePermission”accessDeclaredMembers)

Java 8小程序问题(“Java.lang.RuntimePermission”accessDeclaredMembers),java,security,permissions,applet,Java,Security,Permissions,Applet,我有一个Java小程序,它使用早期版本的Java 7运行良好,但现在在Java 8上我遇到了权限问题。下面是我得到的具体错误: May 28, 2015 12:57:15 PM [com.sun.xml.internal.ws.assembler.MetroConfigLoader] init WARNING: MASM0010: Unable to unmarshall metro config file from location [ jar:file:/C:/Program%20File

我有一个Java小程序,它使用早期版本的Java 7运行良好,但现在在Java 8上我遇到了权限问题。下面是我得到的具体错误:

May 28, 2015 12:57:15 PM [com.sun.xml.internal.ws.assembler.MetroConfigLoader]  init
WARNING: MASM0010: Unable to unmarshall metro config file from location [ jar:file:/C:/Program%20Files/Java/jre1.8.0_45/lib/resources.jar!/com/sun/xml/internal/ws/assembler/jaxws-tubes-default.xml ]
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "accessDeclaredMembers")
似乎由于权限问题,它无法访问xml文件以加载配置。我尝试更新我的java策略文件以允许该权限,但似乎没有帮助。在javaws.policyjava.policy中,对于我的JDK和JRE,我在“grant{”文件内和“grant codeBase”文件顶部添加了以下内容:${java.ext.dirs}/*”{

permission java.lang.RuntimePermission "accessDeclaredMembers";
不过,上面这一行似乎没有什么区别

我还使用Ant构建脚本对我的主JAR和所有支持库JAR进行签名

    <mkdir dir="H:/Eclipse Projects/myProgram/dist/myProgram_lib"/>
    <copy file="D:/Users/user/.ivy2/cache/org.apache.wink/wink-client/jars/wink-client-1.1-incubating.jar" todir="H:/Eclipse Projects/myProgram/dist/myProgram_lib"/>
    <copy file="D:/Users/user/.ivy2/cache/org.apache.wink/wink-common/jars/wink-common-1.1-incubating.jar" todir="H:/Eclipse Projects/myProgram/dist/myProgram_lib"/>
    <copy file="D:/Users/user/.ivy2/cache/org.slf4j/slf4j-api/jars/slf4j-api-1.5.11.jar" todir="H:/Eclipse Projects/myProgram/dist/myProgram_lib"/>
    <copy file="D:/Users/user/.ivy2/cache/org.slf4j/slf4j-jdk14/jars/slf4j-jdk14-1.5.11.jar" todir="H:/Eclipse Projects/myProgram/dist/myProgram_lib"/>
    <copy file="D:/Users/user/.ivy2/cache/javax.xml.bind/jaxb-api/jars/jaxb-api-2.1.jar" todir="H:/Eclipse Projects/myProgram/dist/myProgram_lib"/>
    <copy file="D:/Users/user/.ivy2/cache/javax.xml.stream/stax-api/jars/stax-api-1.0-2.jar" todir="H:/Eclipse Projects/myProgram/dist/myProgram_lib"/>
    <copy file="D:/Users/user/.ivy2/cache/javax.activation/activation/jars/activation-1.1.jar" todir="H:/Eclipse Projects/myProgram/dist/myProgram_lib"/>
    <copy file="D:/Users/user/.ivy2/cache/com.sun.xml.bind/jaxb-impl/jars/jaxb-impl-2.1.4.jar" todir="H:/Eclipse Projects/myProgram/dist/myProgram_lib"/>
    <copy file="D:/Users/user/.ivy2/cache/javax.ws.rs/jsr311-api/jars/jsr311-api-1.1.jar" todir="H:/Eclipse Projects/myProgram/dist/myProgram_lib"/>
    <copy file="D:/Users/user/.ivy2/cache/commons-codec/commons-codec/jars/commons-codec-1.3.jar" todir="H:/Eclipse Projects/myProgram/dist/myProgram_lib"/>
    <copy file="D:/Users/user/.ivy2/cache/xpp3/xpp3_min/jars/xpp3_min-1.1.4c.jar" todir="H:/Eclipse Projects/myProgram/dist/myProgram_lib"/>
    <signjar alias="xxxxxxxxxxxxxxxxx" keystore="xxxxxxxxxxxxxx" storepass="xxxxxx" lazy="true">
         <path>
           <fileset dir="dist" includes="**/*.jar" />
         </path>
           </signjar>

我在Ant脚本中更新清单文件的部分中包含了以下内容:

<manifest>
<attribute name="Permissions" value="all-permissions"/>
<attribute name="Main-Class" value="myProgram.MainFrame"/>
</manifest>

有人知道我能做些什么来摆脱这个权限问题,这样我的代码就可以获得必要的配置文件并运行吗


谢谢!

在Java 8中,您确实需要使用有效的证书对所有JAR进行签名。您是说您正在使用ANT执行此操作,但请使用下面的命令检查这些JAR是否真的进行了签名

jarsigner -verify yourjar.jar
尝试向清单中添加更多属性

http://location.of.your.jar/
所有权限
http://location.of.your.jar/
1
应用程序名称
0.1.0
1.8.0_45
包,你的班级
开发(或生产)
应用程序的url