如 JDK 7 发行说明中所述,我已成为以下 Java RMI 错误的受害者:
当 RMI 服务器尝试使用“file:”URL 方案绑定包含代码库注释的导出对象时,此版本中包含的 rmiregistry 命令中的错误可能会导致引发意外异常。最有可能受到影响的 RMI 服务器是那些仅由在与服务器相同的主机上执行的 RMI 客户端调用的服务器。
RMI 将代码库信息注释为远程对象引用的序列化状态的一部分,以帮助 RMI 客户端在运行时加载与对象关联的所需类和接口。在 RMI 注册表中查找并由在服务器以外的主机上运行的 RMI 客户端调用的导出对象通常使用代码库 URL 方案进行注释,例如“http:”或“ftp:”,这些应该继续正常工作。
作为一种解决方法,RMI 服务器可以将 java.rmi.server.codebase 属性设置为对它们导出的对象使用除“file:”方案之外的代码库 URL。
(强调我的)
我正在本地机器上开发 RMI 应用程序,我需要设置代码库以包含一些库。
StringBuilder codebase = new StringBuilder();
codebase.append(" file:/").append(projectPath).append("/bin/lib/rmiio-2.0.0.jar")
.append(" file:/").append(projectPath).append("/bin/lib/log4j-1.2.9.jar")
.append(" file:/").append(projectPath).append("/bin/lib/commons-logging.jar")
.append(" file:/").append(projectPath).append("/bin/lib/commons-logging-api.jar");
System.setProperty("java.rmi.server.codebase", codebase.toString());
如果没有“文件:/”语法,我怎样才能达到同样的效果?在我的情况下,该错误的有效解决方法是什么?