问题已经解决了,的确如 kingfish 所说,我新下载的j2ee里包含一份比较新的jdk,应该是1.5,我原来装了一份1.4。虽然这个问题解决了,但我的第一个j2ee程序仍不能运行。 程序如下: mport javax.naming.Context; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject;import myclass.*;public class myClient { public static void main(String[] args) { System.out.println("OK"); try { Context initContext = new InitialContext(); System.out.println(initContext); Object obj=initContext.lookup("myRemoteObject"); //远程查找,由名字得到对应的对象。 // RemoteHome home=(RemoteHome)PortableRemoteObject.narrow(obj,RemoteHome.class); // RemoteInterface remote=home.create(); // String receiveFromRemote=remote.message("Hello,Remote Object!"); //远程方法调用 // System.out.println("Client Received From Remote Object: \""+receiveFromRemote+"\""); } catch(Exception e) { System.out.println("---------------------------------------"); e.printStackTrace(); } } }OK javax.naming.InitialContext@187aeca --------------------------------------- javax.naming.NoInitialContextException: Need to specify class name in environmen t or system property, or as an applet parameter, or in an application resource f ile: java.naming.factory.initial at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:6 40) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243 ) at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.jav a:280) at javax.naming.InitialContext.lookup(InitialContext.java:347) at myClient.main(myClient.java:18)可以肯定是initContext.lookup("myRemoteObject")的错,这个地方是jini名,我已经设置了,不知道是为什么,请大虾们帮忙继续看看。
主要是path变量的问题。
--------
同意八百里秦川@龙城异客的说法
程序如下:
mport javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;import myclass.*;public class myClient
{
public static void main(String[] args)
{
System.out.println("OK");
try
{
Context initContext = new InitialContext();
System.out.println(initContext);
Object obj=initContext.lookup("myRemoteObject"); //远程查找,由名字得到对应的对象。
// RemoteHome home=(RemoteHome)PortableRemoteObject.narrow(obj,RemoteHome.class);
// RemoteInterface remote=home.create();
// String receiveFromRemote=remote.message("Hello,Remote Object!"); //远程方法调用
// System.out.println("Client Received From Remote Object: \""+receiveFromRemote+"\"");
}
catch(Exception e)
{
System.out.println("---------------------------------------");
e.printStackTrace();
}
}
}OK
javax.naming.InitialContext@187aeca
---------------------------------------
javax.naming.NoInitialContextException: Need to specify class name in environmen
t or system property, or as an applet parameter, or in an application resource f
ile: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:6
40)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243
)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.jav
a:280)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at myClient.main(myClient.java:18)可以肯定是initContext.lookup("myRemoteObject")的错,这个地方是jini名,我已经设置了,不知道是为什么,请大虾们帮忙继续看看。