注:所有文件用记事本编写就行,然后用再dos环境下调用命令来进行操作。比较容易出错的是为系统配置有关jdk的环境变量。
JDK配置环境变量
首先右键点我的电脑。打开属性。然后选择“高级”里面的“环境变量”,在新的打开界面中的系统变量里需要设置三个属性“java_home”、“path”、“classpath”,其中在没安装过jdk的环境下,path属性是本来存在的。而java_home和classpath是不存在的。
首先点“新建”,然后在变量名写上java_home,顾名其意该变量的含义就是java的安装路径,呵呵,然后在变量值写入刚才安装的路径“E:/Java/jdk1.6.0_02”.
其次在系统变量里面找到path,然后点编辑,path变量的含义就是系统在任何路径下都可以识别java命令,则变量值为“%java_home%/bin;%java_home%/jre/bin”,(其中“%java_home%”的意思为刚才设置java_home的值),也可以直接写上“E:/Java/jdk1.6.0_02”
最后再点“新建”,然后在变量名上写classpath,该变量的含义是为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别。其值为“.;%java_home%/lib;%java_home%/lib/tools.jar (要加.表示当前路径)”,与“%java_home%有相同意思”
以上三个变量设置完毕,则按“确定”直至属性窗口消失,下来是验证看看安装是否成功。先打开“开始”->“运行”,打入“cmd”,进入dos系统界面。然后打“java -version”,如果安装成功。系统会显示java的版本信息。
另外安装java时,安装jdk 和 jre要有两个目录,安装时都选择在同一目录会出现bin和lib文件覆盖现象,从而出现无lib/tools.jar文件的现象,到时即使正确设置了环境变量后javac也不可用!!因此安装jdk后一定要看下在jdk/lib下是否有tools.jar文件,有的话按照上面的方法设置环境变量就ok了
classpath作用:用于计算机找到Java的可执行文件,也就是.class文件。
如果将classpath的值设定为C:/myjava;. Java虚拟机先查找C:/myjava 然后再查找当前所在目录。
classpath的值非常忌讳空格,以后在工作中也不要把源文件放在有空格的目录中。目录中也不允许出现中文字符。
定义远程接口(Arith.java)
public interface Arith extends java.rmi.Remote
{
int [] add(int a[],int b[]) throws java.rmi.RemoteException;
}
实现远程接口(ArithImpl.java)
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
public class ArithImpl extends UnicastRemoteObject implements Arith
{
private String objectName;
public ArithImpl(String s) throws RemoteException
{
super();
objectName=s;
}
public int[] add(int a[],int b[])
{
int c[]=new int[10];
for(int i=0;i<8;i++)
c[i]=a[i]+b[i];
return c;
}
public static void main(String argv[])
{
RMISecurityManager sm=new RMISecurityManager();
System.setSecurityManager(sm);
try{
ArithImpl obj=new ArithImpl("ArithServer");
Naming.rebind("//localhost/ArithServer",obj);
System.out.println("ArithServer bound in registry");
}catch(Exception e)
{
System.out.println("ArithImpl error.");
e.printStackTrace();
}
}
}
使用远程接口开发客户程序
import java.rmi.*;
import java.net.*;
public class ArithApp{
public static void main(String args[])
{
int a[]={1,2,3,4,5,6,7,8};
int b[]={1,2,3,4,5,6,7,8};
int result[]=new int[10];
try{
Arith obj=(Arith)Naming.lookup("//localhost/ArithServer");
result=obj.add(a,b);
}catch(Exception e)
{
System.out.println("ArithApp:"+e.getMessage());
e.printStackTrace();
}
System.out.print("Results are :");
for(int i=0;i<result.length;i++)
System.out.print(result[i]+" ");
System.out.println();
}
}
写好这3个文件之后,进入dos环境,输入以下命令
(1)javac Arith.java
(2)javac ArithImpl.java
(3)javac ArithApp.java
(4)rmic ArithImpl(这一步将会产生一个叫做ArithImpl_Stub.class的文件)
(5)rmiregistry &
注:做完以上操作之后,在文件夹中放入java.policy文件(这个可以再jdk安装目录下找到)
(6)打开另外一个dos环境,输入java -Djava.security.policy=java.policy ArithImpl(如果成功,会提示bind成功)
(7)打开另外一个dos环境,输入java ArithApp(如果成功,会得到一串数字,这是我们调用方法得到的结果)