导致异常报告的主要原因是什么?
相同的可信签名小程序(Digicert证书),在某些PC上运行良好,不在其他PC上运行。当我尝试通过URLConnection
如果它不起作用,我决定
grant {
permission java.security.AllPermission;
};
{/ 2}}但我想避免更新每台电脑。
可能是port
(8081)问题吗?我应该调查什么?
答案 0 :(得分:1)
相同的可信签名小程序(Digicert证书),在某些PC上运行良好,不在其他PC上运行。
它不受其他PC的信任,并且在被问及时被用户接受为不可信任。
OR
这是我的manifest.mf
Trusted-Library: true
Application-Name: MyApp
Name: MyName
Permissions: all-permissions
Created-By: 1.6.0_16 (Sun Microsystems Inc.)
Caller-Allowable-Codebase: *
Main-Class: MyClass
Codebase: *
如果这是完整的清单,则此JAR根本没有签名,更不用说是受信任的证书了。它应该包含Name:
和SHA-256-Digest
个条目。
答案 1 :(得分:0)
为您的applet编写自定义SecurityManager
可以解决您的问题。设置自己的SecurityManager
将授予您的小程序的所有权限。
class customSecurityManager extends SecurityManager {
SecurityManager original;
customSecurityManager(SecurityManager original) {
this.original = original;
}
/**
* Deny permission to exit the VM.
*/
public void checkExit(int status) {
//throw(new SecurityException("Not allowed"));
}
/**
* Allow this security manager to be replaced, if fact, allow pretty
* much everything.
*/
public void checkPermission(Permission perm) {
}
public SecurityManager getOriginalSecurityManager() {
return original;
}
}
现在为您的applet设置此安全管理器
public void init() {
customSecurityManager cSM = new customSecurityManager(System.getSecurityManager());
System.setSecurityManager(cSM);
}
答案 2 :(得分:0)
您必须添加"所有权限"在manifest.mf实例" sandbox"
和
使用代码签名证书签署您的jar文件。
答案 3 :(得分:0)
转到Java jdk和./jre/lib/security/的路径 打开Java策略文件
然后为SocketPermission设置授予权限
grant{
permission java.net.SocketPermission "localhost:8080", "connect,resolve";
}
然后重新启动并运行您的代码。