Java RMI如何添加LIB(并授予它们套接字权限)
对于一个学校项目,我必须从一个独立的应用程序创建一个分布式系统。我们正在使用RMI进行通信,但遇到了一些问题 我创建的服务器启动正常,但是客户端(使用一些swing库等)给了我一个classNotFound异常。为了解决这个问题,我将项目使用的库添加到“C:\ProgramFiles\Java\jre6\lib\ext”。我更喜欢在客户机上放置libs(就像我对构建所做的那样) 有人能告诉我这是否可能,如果可能,怎么可能 问题还不止于此,如果我现在启动客户机,就会得到一个java.security.AccessControlException。我使用一个策略文件,它如下所示:Java RMI如何添加LIB(并授予它们套接字权限),java,rmi,Java,Rmi,对于一个学校项目,我必须从一个独立的应用程序创建一个分布式系统。我们正在使用RMI进行通信,但遇到了一些问题 我创建的服务器启动正常,但是客户端(使用一些swing库等)给了我一个classNotFound异常。为了解决这个问题,我将项目使用的库添加到“C:\ProgramFiles\Java\jre6\lib\ext”。我更喜欢在客户机上放置libs(就像我对构建所做的那样) 有人能告诉我这是否可能,如果可能,怎么可能 问题还不止于此,如果我现在启动客户机,就会得到一个java.securit
grant
{ permission java.net.SocketPermission
"*:1024-65535", "connect,accept";
};
我还尝试添加所有LIB,但这也没有帮助:
grant codebase "file:${java.home}/../lib/ext/appframework-1.0.3.jar" {
permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/beansbinding-1.2.1.jar" {
permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/jcalendar-1.3.3.jar" {
permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/looks-2.0.1.jar" {
permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/swing-worker-1.1.jar" {
permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/swingx-1.6.1.jar" {
permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/swingx-bean.jar" {
permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/ext/swingx-ws-2011_01_16.jar" {
permission java.security.AllPermission;
};
grant
{ permission java.net.SocketPermission
"*:1024-65535", "connect,accept";
};
我希望任何人都能帮助我
-Rob调试java 2安全异常是一个繁琐的试错过程。我猜您是在用JVM开关启动客户机来添加,并告诉它使用安全管理器-添加以下内容
-Djava.security.debug=access,failure
您将获得大量调试信息,但将其搜索为“拒绝访问”将显示需要针对哪个代码库授予哪些权限。这不是一个科学的过程-你只需要不断尝试,直到你认为你已经解决了所有的安全问题。调试java 2安全异常是一个乏味的试错过程。我猜您是在用JVM开关启动客户机来添加,并告诉它使用安全管理器-添加以下内容
-Djava.security.debug=access,failure
您将获得大量调试信息,但将其搜索为“拒绝访问”将显示需要针对哪个代码库授予哪些权限。这不是一个科学的过程-你只需要不断尝试,直到你认为你已经解决了所有的安全问题。这是可行的,但是你能告诉我哪些权限可能是问题所在吗?对不起,我不知道。最好用另一个答案。:)这是有效的,但是你能告诉我哪些权限可能是问题吗?对不起,我不知道。最好用另一个答案。:)谢谢,当我们超过最后期限时,我会给它一个机会(需要做很多工作,所以最好先让它发挥作用)谢谢,当我们超过最后期限时,我会给它一个机会(需要做很多工作,所以最好先让它发挥作用)
grant {
permission java.security.AllPermission;
};