2012-02-23 92 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

相关问题