我的犧牲品於Java RMI錯誤,如在JDK 7發佈說明指出:如何在不使用'file:'的情況下創建文件系統的URL?
與rmiregistry中的命令中的一個錯誤包含在這個版本可能會導致意外的異常被拋出時,一個RMI服務器嘗試使用「file:」URL方案綁定包含代碼庫註釋的導出對象。最有可能受影響的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());
如何在沒有'file:/'語法的情況下實現相同?什麼是我的情況中的錯誤有效的解決方法?
我不明白你爲什麼需要它。文件://方案只能在本地主機內工作,並且在本地主機內,您無論如何都沒有任何代碼部署問題。只需使用CLASSPATH即可。 – EJP