2016-06-11 51 views
0

嗨,我有一個RMI的問題。RMI ClassCastException到遠程接口

我有這個錯誤,當我運行它。

java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to rmi.converter 

這是接口

converter.java

import java.rmi.RemoteException; 
public interface converter { 

double CelciusKelvin (double a) throws RemoteException; 
double CelciusFahrenheit (double a) throws RemoteException; 
double FahrenheitKelvin (double a) throws RemoteException; 
double FahrenheitCelcius (double a) throws RemoteException; 
double KelvinCelcius (double a) throws RemoteException; 
double KelvinFahrenheit (double a) throws RemoteException; 
double AtmosPascal (double a) throws RemoteException; 
double AtmosPSI (double a) throws RemoteException; 
double PascalAtmos (double a) throws RemoteException; 
double PascalPSI (double a) throws RemoteException; 
double PSIAtmos (double a) throws RemoteException; 
double PSIPascal (double a) throws RemoteException; 
} 

這是遠程方法

converterImp.java

import java.rmi.RemoteException; 
import java.rmi.server.UnicastRemoteObject; 



public class converterImp extends UnicastRemoteObject implements converter { 



public converterImp() throws RemoteException 
{ 

} 

    double convert; 


@Override 
public double CelciusKelvin(double a) throws RemoteException { 
    convert = a+273.15; 
    return convert; 
} 

@Override 
public double CelciusFahrenheit(double a) throws RemoteException { 
    convert = (a*1.8)+32; 
    return convert; 
} 

@Override 
public double FahrenheitKelvin(double a) throws RemoteException { 
    convert = (a+459.67)*5/9; 
    return convert; 
} 

@Override 
public double FahrenheitCelcius(double a) throws RemoteException { 
    convert=(a-32)/(9/5); 
    return convert; 
} 

@Override 
public double KelvinCelcius(double a) throws RemoteException { 
    convert = a - 273.15; 
    return convert; 
} 

@Override 
public double KelvinFahrenheit(double a) throws RemoteException { 
    convert=(a-273.15)* 1.8 + 32.00; 
    return convert; 
} 

@Override 
public double AtmosPascal(double a) throws RemoteException { 
    convert = a*101325; 
    return convert; 
} 

@Override 
public double AtmosPSI(double a) throws RemoteException { 
    convert = a*14.6959488; 
    return convert; 
} 

@Override 
public double PascalAtmos(double a) throws RemoteException { 
    convert = a/101325; 
    return convert; 
} 

@Override 
public double PascalPSI(double a) throws RemoteException { 
    convert=a*0.000145037; 
    return convert; 
} 

@Override 
public double PSIAtmos(double a) throws RemoteException { 
    convert = a*0.0680459639; 
    return convert; 
} 

@Override 
public double PSIPascal(double a) throws RemoteException { 
    convert =a*6894.75729; 
    return convert; 
} 

} 

這是我的GUI客戶端。

package projectrmiclient; 
import java.rmi.registry.LocateRegistry; 
import java.rmi.registry.Registry; 
import rmi.converter; 

public class ProjectRMIClient extends javax.swing.JFrame { 


public ProjectRMIClient() { 
    initComponents(); 
} 
String num = ""; 
String str = ""; 



@SuppressWarnings("unchecked") 
// <editor-fold defaultstate="collapsed" desc="Generated Code">       
private void initComponents() { 

    jScrollPane1 = new javax.swing.JScrollPane(); 
    jTextPane1 = new javax.swing.JTextPane(); 
    jButton1 = new javax.swing.JButton(); 
    jButton2 = new javax.swing.JButton(); 
    jButton3 = new javax.swing.JButton(); 
    jButton4 = new javax.swing.JButton(); 
    jButton5 = new javax.swing.JButton(); 
    jButton6 = new javax.swing.JButton(); 
    jButton7 = new javax.swing.JButton(); 
    jButton8 = new javax.swing.JButton(); 
    jButton9 = new javax.swing.JButton(); 
    jButton10 = new javax.swing.JButton(); 
    jButton11 = new javax.swing.JButton(); 
    jLabel1 = new javax.swing.JLabel(); 
    jButton12 = new javax.swing.JButton(); 
    jButton13 = new javax.swing.JButton(); 
    jButton14 = new javax.swing.JButton(); 
    jButton15 = new javax.swing.JButton(); 
    jButton16 = new javax.swing.JButton(); 
    jButton17 = new javax.swing.JButton(); 
    jButton18 = new javax.swing.JButton(); 
    jButton19 = new javax.swing.JButton(); 
    jButton20 = new javax.swing.JButton(); 
    jButton21 = new javax.swing.JButton(); 
    jButton22 = new javax.swing.JButton(); 
    jButton23 = new javax.swing.JButton(); 
    jLabel2 = new javax.swing.JLabel(); 
    jLabel3 = new javax.swing.JLabel(); 
    jLabel4 = new javax.swing.JLabel(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

    jTextPane1.setEditable(false); 
    jScrollPane1.setViewportView(jTextPane1); 

    jButton1.setText("1"); 
    jButton1.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jButton1ActionPerformed(evt); 
     } 
    }); 

    jButton2.setText("2"); 
    jButton2.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jButton2ActionPerformed(evt); 
     } 
    }); 

    jButton3.setText("3"); 
    jButton3.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jButton3ActionPerformed(evt); 
     } 
    }); 

    jButton4.setText("4"); 
    jButton4.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jButton4ActionPerformed(evt); 
     } 
    }); 

    jButton5.setText("5"); 
    jButton5.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jButton5ActionPerformed(evt); 
     } 
    }); 

    jButton6.setText("6"); 
    jButton6.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jButton6ActionPerformed(evt); 
     } 
    }); 

    jButton7.setText("7"); 
    jButton7.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jButton7ActionPerformed(evt); 
     } 
    }); 

    jButton8.setText("8"); 
    jButton8.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jButton8ActionPerformed(evt); 
     } 
    }); 

    jButton9.setText("9"); 
    jButton9.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jButton9ActionPerformed(evt); 
     } 
    }); 

    jButton10.setText("0"); 
    jButton10.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jButton10ActionPerformed(evt); 
     } 
    }); 

    jButton11.setText("Cancel"); 
    jButton11.setToolTipText(""); 
    jButton11.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jButton11ActionPerformed(evt); 
     } 
    }); 

    jLabel1.setText("Temperature"); 

    jButton12.setText("C~F"); 
    jButton12.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jButton12ActionPerformed(evt); 
     } 
    }); 

    jButton13.setText("F~C"); 

    jButton14.setText("K~C"); 

    jButton15.setText("C~K"); 

    jButton16.setText("F~K"); 

    jButton17.setText("K~F"); 

    jButton18.setText("A~PSI"); 

    jButton19.setText("PSI~A"); 

    jButton20.setText("Pas~A"); 

    jButton21.setText("A~Pas"); 

    jButton22.setText("PSI-Pas"); 
    jButton22.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      jButton22ActionPerformed(evt); 
     } 
    }); 

    jButton23.setText("Pas~A"); 

    jLabel2.setText("Pressure"); 

    jLabel3.setText("Result"); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addContainerGap() 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) 
       .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
       .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING) 
       .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 205, Short.MAX_VALUE) 
       .addGroup(layout.createSequentialGroup() 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
          .addGroup(layout.createSequentialGroup() 
           .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) 
           .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
           .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) 
           .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
           .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)) 
          .addGroup(layout.createSequentialGroup() 
           .addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) 
           .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
           .addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) 
           .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
           .addComponent(jButton6, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE))) 
         .addGroup(layout.createSequentialGroup() 
          .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
           .addComponent(jButton7, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) 
           .addComponent(jButton10, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)) 
          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
          .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
           .addComponent(jButton11) 
           .addGroup(layout.createSequentialGroup() 
            .addComponent(jButton8, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE) 
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
            .addComponent(jButton9, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE))))) 
        .addGap(36, 36, 36))) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addGroup(layout.createSequentialGroup() 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 
         .addComponent(jButton18, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addComponent(jButton19, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
         .addComponent(jButton20, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) 
         .addComponent(jButton22, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
         .addComponent(jButton21, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
         .addComponent(jButton23, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE))) 
       .addGroup(layout.createSequentialGroup() 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) 
          .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
          .addComponent(jButton12, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE) 
          .addComponent(jButton14, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)) 
         .addComponent(jButton13, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) 
         .addComponent(jButton16, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
         .addComponent(jButton15, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
         .addComponent(jButton17, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE))) 
       .addComponent(jLabel2)) 
      .addContainerGap(20, Short.MAX_VALUE)) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addGroup(layout.createSequentialGroup() 
        .addGap(34, 34, 34) 
        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addGap(18, 18, 18) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
         .addComponent(jButton3) 
         .addComponent(jButton2) 
         .addComponent(jButton1)) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
         .addComponent(jButton4) 
         .addComponent(jButton5) 
         .addComponent(jButton6)) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
         .addComponent(jButton7) 
         .addComponent(jButton8) 
         .addComponent(jButton9)) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
         .addComponent(jButton11) 
         .addComponent(jButton10)) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
        .addComponent(jLabel3)) 
       .addGroup(layout.createSequentialGroup() 
        .addContainerGap() 
        .addComponent(jLabel1) 
        .addGap(7, 7, 7) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
         .addComponent(jButton15) 
         .addComponent(jButton12)) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
         .addComponent(jButton16) 
         .addComponent(jButton13)) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
         .addComponent(jButton17) 
         .addComponent(jButton14)) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addComponent(jLabel2) 
        .addGap(18, 18, 18) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
         .addComponent(jButton18) 
         .addComponent(jButton21)) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
         .addComponent(jButton22) 
         .addComponent(jButton19)) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
         .addComponent(jButton20) 
         .addComponent(jButton23)))) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
      .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addContainerGap(20, Short.MAX_VALUE)) 
    ); 

    pack(); 
}// </editor-fold>       

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    str = evt.getActionCommand(); 
    num = num + str; 
    jTextPane1.setText(num); 

}           

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           
    str = evt.getActionCommand(); 
    num = num + str; 
    jTextPane1.setText(num); 
}           

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {           
    str = evt.getActionCommand(); 
    num = num + str; 
    jTextPane1.setText(num);// TODO add your handling code here: 
}           

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {           
    str = evt.getActionCommand(); 
    num = num + str; 
    jTextPane1.setText(num);// TODO add your handling code here: 
}           

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {           
    str = evt.getActionCommand(); 
    num = num + str; 
    jTextPane1.setText(num);// TODO add your handling code here: 
}           

private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {           
    str = evt.getActionCommand(); 
    num = num + str; 
    jTextPane1.setText(num);// TODO add your handling code here: 
}           

private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {           
    str = evt.getActionCommand(); 
    num = num + str; 
    jTextPane1.setText(num);// TODO add your handling code here: 
}           

private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {           
    str = evt.getActionCommand(); 
    num = num + str; 
    jTextPane1.setText(num);// TODO add your handling code here: 
}           

private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {           
    str = evt.getActionCommand(); 
    num = num + str; 
    jTextPane1.setText(num);// TODO add your handling code here: 
}           

private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {           
    str = evt.getActionCommand(); 
    num = num + str; 
    jTextPane1.setText(num);// TODO add your handling code here: 
}           

private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {           
    jTextPane1.setText(""); 
}           

private void jButton22ActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
}           

private void jButton12ActionPerformed(java.awt.event.ActionEvent evt) {           
    try { 
     // fire to localhost port 1099 
     Registry myRegistry = LocateRegistry.getRegistry("127.0.0.1", 1099); 

     // search for myMessage service 
     converter impl = (converter) myRegistry.lookup("PTConverter"); 

     if(!jTextPane1.getText().isEmpty()) 
     { 
      double input = Double.parseDouble(jTextPane1.getText()); 
      // call server's method 
      double result=impl.CelciusFahrenheit(input); 
      String answer = result + "Fahrenheit"; 
      jLabel4.setText(answer); 

     } 




    } catch (Exception e) { 
     e.printStackTrace(); 
    }  
}           

/** 
* @param args the command line arguments 
*/ 
public static void main(String args[]) { 
    /* Set the Nimbus look and feel */ 
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 
    * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
    */ 
    try { 
     for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
      if ("Nimbus".equals(info.getName())) { 
       javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
       break; 
      } 
     } 
    } catch (ClassNotFoundException ex) { 
     java.util.logging.Logger.getLogger(ProjectRMIClient.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (InstantiationException ex) { 
     java.util.logging.Logger.getLogger(ProjectRMIClient.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (IllegalAccessException ex) { 
     java.util.logging.Logger.getLogger(ProjectRMIClient.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
     java.util.logging.Logger.getLogger(ProjectRMIClient.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } 
    //</editor-fold> 
    //</editor-fold> 

    /* Create and display the form */ 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new ProjectRMIClient().setVisible(true); 
     } 
    }); 
} 

// Variables declaration - do not modify      
private javax.swing.JButton jButton1; 
private javax.swing.JButton jButton10; 
private javax.swing.JButton jButton11; 
private javax.swing.JButton jButton12; 
private javax.swing.JButton jButton13; 
private javax.swing.JButton jButton14; 
private javax.swing.JButton jButton15; 
private javax.swing.JButton jButton16; 
private javax.swing.JButton jButton17; 
private javax.swing.JButton jButton18; 
private javax.swing.JButton jButton19; 
private javax.swing.JButton jButton2; 
private javax.swing.JButton jButton20; 
private javax.swing.JButton jButton21; 
private javax.swing.JButton jButton22; 
private javax.swing.JButton jButton23; 
private javax.swing.JButton jButton3; 
private javax.swing.JButton jButton4; 
private javax.swing.JButton jButton5; 
private javax.swing.JButton jButton6; 
private javax.swing.JButton jButton7; 
private javax.swing.JButton jButton8; 
private javax.swing.JButton jButton9; 
private javax.swing.JLabel jLabel1; 
private javax.swing.JLabel jLabel2; 
private javax.swing.JLabel jLabel3; 
private javax.swing.JLabel jLabel4; 
private javax.swing.JScrollPane jScrollPane1; 
private javax.swing.JTextPane jTextPane1; 
// End of variables declaration     
} 

我使用GUI Builder在NetBeans上開發了GUI。 問題是當我按jButton12。它會顯示錯誤如上所述。

+0

轉換器接口是什麼包? – EJP

+0

@EJP它是在包轉換器以及converterImp –

+0

那麼名稱'rmi.converter'從哪裏來? – EJP

回答

2

您似乎已經爲客戶端在不同的包中創建了遠程接口的副本。你不能那樣做。兩側的遠程接口必須相同:The Same,並且不包括更改其包裝,或者其他任何其他物品。

+0

除了打包之外,遠程接口'converter'不應該擴展java.rmi.Remote'接口嗎? – STaefi

+0

@staefi確實,很好的發現。如果它不符合現實,我懷疑出口會成功。 – EJP