那是EJB服务器实现了home接口然后把它放在JNDI上
接口本身是不能实例化的

解决方案 »

  1.   

    client程序是一个独立的程序,虽说“EJB服务器实现了home接口然后把它放在JNDI上”,但接口与其实现不在一个jvm中,更不用说是不是client程序可读了。那么client怎么通过编译?
      

  2.   

    客户端只是通过JNDI查找到一个对象(Object)
    然后把它转换为Home接口,当然可以
      

  3.   

    在客户机执行:javac -g Client.java。编译client程序,这应该和jndi无关吧。而这时client程序中有
    HelloWorldHome hwh=......narrow(obj,HelloWorldHome.class); 语句。怎么就通过了。再极端一点,此时服务器没开,只有开发用的机器在运行,怎么办?
      

  4.   

    服务器没开在进行JNDI查找的时候会异常客户端需要有本地接口的类文件
    当然可以通过
      

  5.   

    “服务器没开在进行JNDI查找的时候会异常”
    ——只编译不运行也用的着查jndi??“客户端需要有本地接口的类文件当然可以通过”
    ——是有本地接口的文件,但没有“类文件”。没有实现,不能说是类吧。
        客户程序还是只能“看到”接口,找不到实现。
        那么,还是这个问题:只有接口,怎么编译通过了?
      

  6.   

    只要有接口就可以编译通过了
    这正是使用接口的好处,你只知道怎么获得一个接口,不用知道它的实现java.util.Iterator是接口
    但是
    new java.util.ArrayList().iterator();
    得到一个Iterator能不能编译通过?
      

  7.   

    你并不知道具体实现Iterator的类J2EE的SDK 会生成运行时需要的桩模块
      

  8.   

    现场操练一把,发现:
    interface hi
    {
    String getname();
    }public  class mm
    {
    hi HI;
    public static void main()
    {
    }
    }只有这几句代码,什么实现都不用谈了。竟然编译通过!!!狂FT!!!!!!
    看来接口本身是可以直接用来声明对象的。老兄的意见如何?
      

  9.   

    为什么FT?你的HI没有实例化,当然通过你缺少基本的面向对象的认识
      

  10.   

    北斗猪:
         看好我的题意再表态,好不好。“看接口的定义,它应该是抽象类吧。抽象类不是不能直接用来声明对象吗? 为什么调用ejb的客户端程序中可以。 ”     难道我的程序不是“声明”吗?
      

  11.   

    抽象类和接口可以声明用来变量,但不能将它实例化List list1;是可以的
    List list2 = new ArrayList();是可以的
    List list3 = new List();不行