2012-02-23 83 views
-3

我收到以下錯誤:爲什麼我找不到適合exportObject錯誤的方法?

no suitable method found for exportObject(exame2010.pkg2011.perfect,int) 

在此線路上RMIServer的:

perfectInterface stub = (perfectInterface) UnicastRemoteObject.exportObject(obj, 0); 

相關的代碼如下:


public class RMIServer 
{ 
    public static void main(String[] args) 
    { 
     try 
     { 
      perfect obj = new perfect(); 
      perfectInterface stub = (perfectInterface) UnicastRemoteObject 
        .exportObject(obj, 0); 
      Registry registry = LocateRegistry.createRegistry(10000); 
      registry.bind("RemoteClass", stub); 
      System.out.println("Server start"); 
     } 
     catch (Exception ex) 
     { 
     } 
    } 
} 

public class RMIClient 
{ 
    public static void main(String[] args) 
    { 
     try 
     { 
      Registry registry = LocateRegistry.getRegistry("localhost", 10000); 
      perfectInterface stub = (perfectInterface) registry 
        .lookup("RemoteClass"); 
      System.out.println("MENSAGEM " + stub.getperfect()); 
     } 
     catch (Exception ex) 
     { 
     } 
    } 
} 

public interface perfectInterface extends Remote 
{ 
    public List<Integer> getperfect() throws RemoteException; 
} 

public class perfect extends Thread implements Serializable 
{ 
    public List<Integer> getperfect() throws RemoteException 
    { 
     return Exame20102011.calcula(); 
    } 
} 

public class Exame20102011 extends Thread implements Serializable 
{ 
    List<Integer> perfect = new ArrayList<Integer>(); 
    int ini = 0; 
    int fim; 
    int sum; 

    public Exame20102011(int ini, int fim) 
    { 
     this.ini = ini; 
     this.fim = fim; 
    } 

    public void run() 
    { 
     for (int number = ini; number < fim; number++) 
     { 
      sum = 0; 
      for (int J = 1; J < number; J++) 
      { 
       if (number % J == 0) 
       { 
        sum += J; 
       } 
      } 
      if (sum == number) 
      { 
       perfect.add(number); 
      } 
     } 
    } 

    public static List<Integer> calcula() 
    { 
     Scanner LIMIT = new Scanner(System.in); 
     String Limit = LIMIT.nextLine(); 

     int dim = Integer.parseInt(Limit)/8; 

     Exame20102011[] calculaPerfeitos = new Exame20102011[8]; 

     for (int i = 0; i < calculaPerfeitos.length; i++) 
     { 
      calculaPerfeitos[i] = new Exame20102011(i * dim, (i + 1) * dim); 
     } 

     for (int i = 0; i < calculaPerfeitos.length; i++) 
     { 
      calculaPerfeitos[i].start(); 
     } 

     for (int i = 0; i < calculaPerfeitos.length; i++) 
     { 
      try 
      { 
       calculaPerfeitos[i].join(); 
      } 
      catch (InterruptedException ex) 
      { 
       Logger.getLogger(Exame20102011.class.getName()).log(
         Level.SEVERE, null, ex); 
      } 
     } 

     List<Integer> perfect = new ArrayList<Integer>(); 
     for (int i = 0; i < 8; i++) 
     { 
      for (int j = 0; j < calculaPerfeitos[i].perfect.size(); j++) 
      { 
       perfect.add(calculaPerfeitos[i].perfect.get(j)); 
      } 
     } 
     return perfect; 
    } 

    public static void main(String[] args) 
    { 
     List<Integer> perfect = new ArrayList<Integer>(); 
     perfect = calcula(); 
     for (int i = 0; i < perfect.size(); i++) 
     { 
      System.out.println("Numero perfeitos calculados = " 
        + perfect.get(i)); 
     } 
    } 
} 

問題是什麼?

+1

這是一個回家測試? – Paul 2012-02-23 20:55:38

+1

如果您需要緊急幫助,請花點時間正確地設置代碼格式 - 讓我們閱讀起來越容易,我們就越有可能提供幫助。 – DNA 2012-02-23 20:57:51

回答

2

錯誤消息意味着類UnicastRemoteObject沒有靜態方法exportObject(perfect,int)。這是因爲perfect類沒有執行perfectInterface,所以它不執行Remote

+0

謝謝兄弟,愚蠢的錯誤:我忘了改變這一點,複製代碼:P – 2012-02-23 21:00:59

相關問題