注:所有檔案用記事本編寫就行,然後用再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(如果成功,會得到一串數字,這是我們調用方法得到的結果)