2015-11-08 57 views
-4

如何使用遠程主機上的正確參數運行rmiregistry和RMI服務器?如何使用正確的參數運行rmiregistry和rmi服務器?

運行RMI客戶端時,得到了這樣的問題:

java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
java.net.MalformedURLException: unknown protocol: c 
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) 
at com.labros.client.TestClient.main(TestClient.java:33) 
Caused by: java.net.MalformedURLException: unknown protocol: c 
at java.net.URL.<init>(Unknown Source) 
at java.net.URL.<init>(Unknown Source) 
at java.net.URL.<init>(Unknown Source) 

我開始rmiregistry中與遠程主機上的以下內容:

rmiregistry -J-Djava.rmi.server.codebase=file:///export/home/timsadm/Projects/rmi-server/cla‌​sses -J-Djava.security.policy=/export/home/timsadm/Projects/rmi-server/classes/java.p‌​olicy & 

java -Djava.rmi.server.codebase=file:///export/home/timsadm/Projects/rmi-server/class‌​es -Djava.security.policy=/export/home/timsadm/Projects/rmi-server/classes/java.pol‌​icy com.labros.server.Server 

Server started 
+0

在遠程主機上啓動rmiregistry,具體如下: john @ john:〜/ Projects/rmi-server/classes $ rmiregistry -J -Djava.rmi.server.codebase = file:/// export/home/timsadm/Projects/rmi-server/classes -J-Djava.security.policy =/export/home/timsadm/Projects/rmi-server/classes/java.policy& 和服務器: john @ john :〜/ Projects/rmi-server/classes $ java -Djava.rmi.server.codebase = file:/// export/home/timsadm/Projects/rmi-server/classes -Djava.security.policy =/export/home /timsadm/Projects/rmi-server/classes/java.policy com.labros.server.Server 服務器啓動... – Labros

+1

你應該[編輯]到你的問題,而不是發表評論。 – Mogsdad

+0

請勿對未引用的文本使用引號格式,並且對代碼或計算機輸出的文本使用代碼格式。 – EJP

回答

0
java -Djava.rmi.server.codebase=file:///export/home/timsadm/Projects/rmi-server/class‌​es 
服務器

and

java.net.MalformedURLException: unknown protocol: c 

這些是相互矛盾的。我懷疑你的codebase參數確實看起來像這樣:

-Djava.rmi.server.codebase=c:/export/home/timsadm/Projects/rmi-server/class‌​es 

這不是一個有效的URL。

但是你爲什麼要使用代碼庫功能呢? A file: codebase URL只能在單個主機中運行,在這種情況下,根本不需要代碼庫功能,或者從註冊表和客戶端的角度指定共享文件系統似乎這樣做。通常,代碼庫URL是http:ftp:,它們指的是JAR文件。