import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.rmi.*;
import java.net.*;
public class JavaRmiClient extends JFrame{
 static JFrame jf;
 JTextField jt;
     JTextField jt2;
     JLabel jl;
 JLabel jl2;
 JButton jb;
 Hello he=new Hello();
public JavaRmiClient()throws Exception{
     setSize(800,600);
  jt=new JTextField(15);
  jt2=new JTextField(15);
  JLabel jl=new JLabel("a");
  JLabel jl2=new JLabel("b");
  jb=new JButton("submit");
  JPanel jp=new JPanel();
  jp.add(jl);
  jp.add(jt);
  jp.add(jl2);
  jp.add(jt2);
  jp.add(jb);
  setContentPane(jp);
  jb.addActionListener(he);
  }
  public class Hello implements ActionListener {
 public void actionPerformed(ActionEvent e){
  try{
    System.setSecurityManager(new SecurityManager());
  JAVARMI JS=(JAVARMI)Naming.lookup("rmi://127.0.0.1:1099/RemoteSer");
  int a=Integer.parseInt(jt.getText());
  int b=Integer.parseInt(jt2.getText());
  int c=JS.col(a,b);
  Integer k=new Integer(c);
  JOptionPane.showMessageDialog(new JavaRmiClient(),k.toString());}
  catch(Exception s){
  System.out.println(s);}
 }}
    public static void main(String args[])throws Exception{
   JavaRmiClient s=new JavaRmiClient();
   s.show();
        
  }
 
 }
    
------------------------------------------- 
import java.rmi.*;
import java.rmi.server.*;
import java.net.*;
public class JavaRmiImp extends UnicastRemoteObject implements JAVARMI{
public JavaRmiImp()throws RemoteException{} 
public int col(int a,int b)
throws RemoteException{
return a*b;

}
--------------------------------------------------
  import java.rmi.*;
public interface JAVARMI extends Remote{
public int col(int a,int b)throws RemoteException;
}
-------------------------------------------------------
import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
import java.net.*;
public class JavaRmiServer{
public JavaRmiServer()throws Exception{
}
public void namereg()throws Exception {
System.setSecurityManager(new SecurityManager());
JAVARMI jrmi=new JavaRmiImp();
Naming.rebind("rmi://127.0.0.1:1099/RemoteSer",jrmi);
System.out.println ("bind start...");
}
public static void main(String args[])throws Exception{
    new JavaRmiServer().namereg();

}
}


然后,我配置java的安全策略文件(jre\lib\security\java.policy
因为我把代码放在了d:grant codeBase "file:/d:/*" {
  permission java.security.AllPermission;}
最后报错java.security.accessControlExceptin :accss denied

解决方案 »

  1.   

    这位朋友。我把你的代码编译运行了一下,没问题。
    可能是你配置安全策略文件这个步骤出了问题。
    我是用policytool工具定制安全策略的。
      

  2.   

    1.C:\Documents and Settings\Gaison>policytool
    2.点“添加规则项目”
    3.点“添加权限”
    4.在许可选框那里选择"AllPermission",“确认”。
    5.我的是保存为"C:\Documents and Settings\Gaison\.java.policy".