2014-08-31 2 views
0

Я новичок в RMI и пытаюсь применить следующее к проекту, над которым я работаю.
Этот код кода Naming.lookup...... theWork.newCalculator(); всегда должен быть в main методе?
Могу ли я позвонить myCalculator за пределами main метод?
Когда я попытался, я получаю ошибку myCalculator cannot be resolved.
Ниже приведен пример звонка myCalculator в main поэтому он работает. Как сделать myCalculator.plus(arg) доступным в другом методе?Метод вызова клиента RMI

public static void main(String [] args) 
{ 

     try{ 


      CalculatorFactory theWorks =  (CalculatorFactory)Naming.lookup("rmi://localhost:13456/CalculationsAnon"); 
      Calculator myCalculator = theWorks.newCalculator(); 

      System.out.println("I have a calculator"); 

      int val = 0; 
      myCalculator.clear(); 
      BufferedReader bin = new BufferedReader(new InputStreamReader(System.in)); 
      for(;;) 
      { 
       System.out.println(": "+val+":"); 
       System.out.print("Command>"); 
       String s = (bin.readLine().trim()); 

       if(s.equals("+")){ 

        System.out.print("Value>"); 
        int arg = 0; 
        s=(bin.readLine().trim()); 
        arg = Integer.parseInt(s); 
        val = myCalculator.plus(arg); 

       } 

       // more codes here 
+0

Пожалуйста, покажите нам, что вы пробовали. –

ответ

1

Вы определили объект MyCalculator в качестве локальной переменной внутри основного метода, поэтому, если вы пытаетесь ссылаться на него снаружи вы получаете не может быть решена ошибка.

ли вы попробуете определения ссылку на объект MyCalculator за пределами основного метода, как это: -

private static Calculator myCalculator = null; 

public static void main(String [] args) 
{ 

     try{ 


      CalculatorFactory theWorks =  (CalculatorFactory)Naming.lookup("rmi://localhost:13456/CalculationsAnon"); 
      myCalculator = theWorks.newCalculator(); 

      // You rest of the code here 
+0

@kbear мое удовольствие –

0

ли этот кусок кода «Naming.lookup ...... theWork.newCalculator(); " всегда нужно быть основным методом?

No.

Могу ли я позвонить MyCalculator вне основного метода?

Да, если у вас есть доступ к переменной theWorks.

Когда я попытался, я получаю ошибку myCalculator cannot be resolved.

Это ошибка компиляции. Указанная переменная не имеет значения. Это действительно не имеет никакого отношения к RMI вообще, просто общая ошибка прогамминга.

Ниже приведен пример вызова myCalculator в основном, чтобы он работал. Как сделать myCalculator.plus (arg) доступным в другом методе?

Проведите поиск в этом методе или сохраните результат поиска основного метода в статическую или переменную экземпляра вместо локальной переменной.

Смежные вопросы