升级到 Java 7(Oracle/Sun JDK,而不是 OpenJDK)后,如果我尝试在 Web Start 下测试我的应用程序javaws
,它告诉我“应用程序被安全设置阻止”。我可以使用 Java 控制面板将安全性从高降低到中,以使其正常工作(它询问我是否要启动未签名的应用程序),但这也会降低我的 Web 浏览器的安全级别。有没有任何系统属性可以让我这样做javaws -J-Dkey=value
让 javaws 的一个实例放松或忽略有关将启动的内容的安全性(但在其他方面保持安全性相同)?
EDIT:如果有人能指出我的 Java 7 源代码在哪里javaws
是的,我很乐意通读代码来找到答案。
EDIT 2:当我通过 Java 控制面板将 Java 安全性设置为中时,使用以下命令启动我的应用程序javaws
结果它询问我是否要运行未签名的应用程序;这就是我想要复制的。控制面板通过添加系统属性将安全性设置为中deployment.security.level=MEDIUM
到文件~/.java/deployment/deployment.properties
。我尝试了两种方法来使用它:
1) Pass -J-Ddeployment.security.level=MEDIUM
to javaws
。这会导致我的应用程序完全启动,而不会询问我是否要运行未签名的应用程序。
2) Pass -J-Ddeployment.system.config=~/.java/deployment/FOO.properties
, where FOO.properties
是正常的副本deployment.properties
文件,与deployment.security.level=MEDIUM
手动添加。同样,这会导致我的应用程序完全启动,而不会询问我是否要运行未签名的应用程序。
EDIT 3:请注意,我使用的是 Oracle/Sun JDK,而不是 OpenJDK。
- 您是否尝试过创建自己的自定义
SecurityManager
?
- 你有没有尝试过使用
java.security.AllPermission
(只是为了测试这是否适合您)?
相关规格:
- http://docs.oracle.com/javase/7/docs/api/java/lang/SecurityManager.html http://docs.oracle.com/javase/7/docs/api/java/lang/SecurityManager.html
- http://download.java.net/jdk8/docs/technotes/guides/security/permissions.html http://download.java.net/jdk8/docs/technotes/guides/security/permissions.html
- http://download.java.net/jdk8/docs/technotes/guides/security/spec/security-spec.doc.html http://download.java.net/jdk8/docs/technotes/guides/security/spec/security-spec.doc.html
这可能与您非常相关:
- http://www.javaworld.com/javatips/jw-javatip20.html http://www.javaworld.com/javatips/jw-javatip20.html
编辑:回复:javaws,检查 javaws 本身的调用。我做到了cat /usr/bin/javaws
现在我们开始:
#!/bin/bash
JAVA=/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
LAUNCHER_BOOTCLASSPATH="-Xbootclasspath/a:/usr/share/icedtea-web/netx.jar"
LAUNCHER_FLAGS=-Xms8m
CLASSNAME=net.sourceforge.jnlp.runtime.Boot
BINARY_LOCATION=/usr/bin/javaws
PROGRAM_NAME=javaws
CP=/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/rt.jar
JAVA_ARGS=( )
ARGS=( )
COMMAND=()
i=0
j=0
while [ "$#" -gt "0" ]; do
case "$1" in
-J*)
JAVA_ARGS[$i]="${1##-J}"
i=$((i+1))
;;
*)
ARGS[$j]="$1"
j=$((j+1))
;;
esac
shift
done
k=0
COMMAND[k]="${JAVA}"
k=$((k+1))
COMMAND[k]="${LAUNCHER_BOOTCLASSPATH}"
k=$((k+1))
COMMAND[k]="${LAUNCHER_FLAGS}"
k=$((k+1))
i=0
while [ "$i" -lt "${#JAVA_ARGS[@]}" ]; do
COMMAND[k]="${JAVA_ARGS[$i]}"
i=$((i+1))
k=$((k+1))
done
COMMAND[k]="-classpath"
k=$((k+1))
COMMAND[k]="${CP}"
k=$((k+1))
COMMAND[k]="-Dicedtea-web.bin.name=${PROGRAM_NAME}"
k=$((k+1))
COMMAND[k]="-Dicedtea-web.bin.location=${BINARY_LOCATION}"
k=$((k+1))
COMMAND[k]="-Djava.security.manager"
k=$((k+1))
COMMAND[k]="-Djava.security.policy=/etc/icedtea-web/javaws.policy"
k=$((k+1))
COMMAND[k]="${CLASSNAME}"
k=$((k+1))
j=0
while [ "$j" -lt "${#ARGS[@]}" ]; do
COMMAND[k]="${ARGS[$j]}"
j=$((j+1))
k=$((k+1))
done
"${COMMAND[@]}"
exit $?
最重要的是,一个javaws.policy
已加载。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)