2012-11-28 50 views
0

我下面的一個基本的Java RMI教程這裏分佈式系統:http://people.cs.aau.dk/~bnielsen/DS-E08/Java-RMI-Tutorial/Java RMI的教程編譯時錯誤 - 接口未發現

我在與我的編譯Server實現的問題。

的錯誤如下:

RMIServer.java:5: cannot find symbol 
symbol: class ServerInterface 
public class RMIServer extends UnicastRemoteObject implements ServerInterface { 
                 ^
1 error 

這是我的服務器上執行:

package rmiTutorial; 
import java.rmi.server.UnicastRemoteObject; 
import java.rmi.*; 

public class RMIServer extends UnicastRemoteObject implements ServerInterface { 

    private String myString = " "; 

    //Default constructor 
    public RMIServer() throws RemoteException { 
    super(); 
    } 

    //inherited methods 
    public void setString(String s) throws RemoteException { 
    this.myString =s; 
    } 

    public String getString() throws RemoteException{ 
    return myString; 
    } 

    //main: instantiate and register server object 
    public static void main(String args[]){ 
    try{ 
     String name = "RMIServer"; 
     System.out.println("Registering as: \"" + name + "\""); 
     RMIServer serverObject = new RMIServer(); 
     Naming.rebind(name, serverObject); 
     System.out.println(name + " ready..."); 
    } catch (Exception registryEx){ 
     System.out.println(registryEx); 
    } 
    } 
} 

ServerInterface:

package rmiTutorial;                     
import java.rmi.*; 

public interface ServerInterface { 

    public String getString() throws RemoteException; 
    public void setString(String s) throws RemoteException; 

} 

的RMIServer的類和ServerInterface都在同一個包。 我已經完全按照教程進行了練習,所以我不太瞭解我如何設法打破它!

任何幫助將不勝感激! 謝謝。

托裏

+0

你是如何編譯這些的? –

+0

你必須先編譯ServerInterface然後RMIServer – Suranga

+0

最初我編譯了ServerInterface,然後試圖單獨編譯RMIServer。 – ToriBean

回答

0

我懷疑你正在編譯這些分開。本教程是不明確這一點,但你需要一起編譯這些(在最簡單的情況下):

javac rmiTutorial/RMIServer.java rmiTutorial/ServerInterface.java 

(包括其他適當的標誌作爲必要 - 庫,類路徑等)。

您需要將兩者編譯在一起,以便編譯器可以在構建RMIServer時找到ServerInterface。你可以首先編譯ServerInterface,但是你需要編譯RMIServer一個合適的類路徑引用,以便它可以找到接口。

+0

非常感謝!那段時間馬上編譯!爲了澄清,爲什麼會出現這種情況? – ToriBean

+0

回答修改回答您的後面的問題 –

+0

Eh?在這種情況下,編譯服務器類將編譯接口。我已經做了十五年了。如果目錄和包不同意它只會失敗。 – EJP