请参阅这篇文章的"RMI注册表问题“一文,以了解Java 1.6.0_29的背景。
如果我理解正确(我是德语),更新会在rmiregistry中引入一个错误,它无法处理代码库中的文件: pattern。
也就是说,以下内容将不再适用于1.6.0_29:
-Djava.rmi.server.codebase="file:myproject/bin/ ..."我们目前使用的特性是有一个带有文件:语法的代码库。有人知道如何解决这个问题吗?
注意:不,我们不想启动本地的webserver或ftp服务器.
更新:
在Naming.bind上,引发此异常:
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: access to class loader denied
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:400)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:248)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)发布于 2011-11-17 00:33:10
我也遇到了同样的问题,并且可以确认将JDK降级到早期版本解决了这个问题。我知道,这不是你想要的解决方案,但至少它能让它发挥作用。
发布于 2013-08-14 07:20:20
以在windows中运行为例:
步骤1.在C:\Users\Jimmy.java.policy (如果不存在创建它)中,追加以下内容:
grant { permission java.security.AllPermission; };当然"C:\Users\Jimmy\“是用户主页,请相应地更改为您的主页。添加AllPermission只是为了快速解决您的问题。您最好在这里配置一个更精确的FilePermission。
步骤2.启动rmiregistry:
C:\JDK\bin>rmiregistry -J-Djava.rmi.server.codebase=file://C:/workspaces/MyLab/target/classes/(请注意代码基必须以“/”结尾)
步骤3.运行您的服务器和客户端程序.
参考文献:
http://docs.oracle.com/javase/7/docs/technotes/guides/rmi/codebase.html http://docs.oracle.com/javase/7/docs/technotes/guides/security/spec/security-spec.doc3.html http://docs.oracle.com/javase/7/docs/technotes/guides/rmi/enhancements-7.html
发布于 2011-12-15 06:32:13
看起来没有解决办法,因为它是一个bug,所以请等待修复。
详情见
代码修复http://icedtea.classpath.org/hg/icedtea6/rev/67df573b0734
https://stackoverflow.com/questions/8152838
复制相似问题