请问在RMI程序中怎样设置java.rmi.server.codebase (200分)

  • 主题发起人 cddelphi
  • 开始时间
C

cddelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
我在试验RMI程序的时候,不知道该怎样设置java.rmi.server.codebase,具体如下:
PiRemote.java代码:
package com.prefect.pi;
import java.rmi.*;
interface PiRemote extends Remote
{
double getPi() throws RemoteException;
}
Pi.java代码:
package com.prefect.pi;
import java.net.*;
import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
public class Pi extends UnicastRemoteObject implements PiRemote
{
publicdo
uble getPi() throws RemoteException
{
return Math.PI;
}
public Pi() throws RemoteException
{
}
public static void main(String[] arguments)
{
System.setSecurityManager(new RMISecurityManager());
try
{
Pi p=new Pi();
Naming.bind("Default:1010/Pi",p);
} catch (Exception e)
{
System.out.println("Error---"+e.toString());
e.printStackTrace();
}
}
}
OutputPi.java代码:
package com.prefect.pi;
import java.rmi.*;
import java.rmi.registry.*;
public class OutputPi
{
public static void main(String[] arguments)
{
System.setSecurityManager(new RMISecurityManager());
try
{
PiRemote pr=(PiRemote)Naming.lookup("//Default:1010/Pi");
for (int i=0;
i<10;
i++)
{
System.out.println("Pi="+pr.getPi());
}
} catch(Exception e)
{
System.out.println("Error---"+e.toString());
e.printStackTrace();
}
}
}

我的PiRemote.java,Pi.java,OutputPi.java都存放在c:/test/com/prefect/pi下面,我的CLASSPATH中包含c:/test.
现在我已经生成了它们的class文件,并通过rmic com.prefect.pi.Pi在c:/test/com/prefect/pi下面生成了Pi_Stub.class和Pi_Skel.class;同时我通过start rmiregistry 1010启动了RMI注册,然后通过java Pi运行了服务器程序。接下来要指出在哪里能找到跟应用程序相关的所有类文件,这是通过设置java.rmi.server.codebase来完成的,我试着设置为:
C:/test>java -D java.rmi.server.codebase=com.prefect.pi.Pi
Exception in thread "main" java.lang.NoClassDefFoundError: java/rmi/server/codeb
ase=com/prefect/pi/Pi
C:/test>java -D java.rmi.server.codebase=c:/test/com.prefect.pi.Pi
Exception in thread "main" java.lang.NoClassDefFoundError: java/rmi/server/codeb
ase=c:/test/com/prefect/pi/Pi
C:/test>java -D java.rmi.server.codebase=c:/test/com/prefect/pi/com.prefect.pi.P
i
Exception in thread "main" java.lang.NoClassDefFoundError: java/rmi/server/codeb
ase=c:/test/com/prefect/pi/com/prefect/pi/Pi

C:/test>java -D java.rmi.server.codebase=c:/test/com/prefect/pi/Pi
Exception in thread "main" java.lang.NoClassDefFoundError: java/rmi/server/codeb
ase=c:/test/com/prefect/pi/Pi
都不对,请问该如何设置才能正确运行呢?谢谢!
 
java [red]-D java[/red].rmi.server.codebase
写法错误
应该是这样的
java [red]-Djava[/red].rmi.server.codebase
 
关注!!!
 
顶部