我在试着写第一个JAVA/CORBA程序,现在遇到配置上的问题
我用idl2java编译idl 文件的时候
用下面的命令:
idl2java    count.idl  -no_comments  -no_tie
但是出现这样的错误:
Exception in thread "main" java.lang.ClassCastException
        at com.visigenic.vbroker.tools.idl2java.main(idl2java.java:30)
请求高人指教

解决方案 »

  1.   

    编辑IDL文件命令是IDLJ 你只要执行如下操作就可以了,IDLJ "文件名" 例如:IDLJ idl.idl
    就会出现在当前目录下出现一个IDL目录,里面包含所需要的JAVA代码。
      

  2.   

    成功了,但是idlj和idl2java是不是一样的?有什么区别吗
      

  3.   

    anli99(宁之):
    能留下你的联系方式吗,qq,或者msn什么的
      

  4.   

    你作实验的话,只需要用jdk带的orb,用不着拿borland的visibroker来用,我还没看到过vbroker在项目中的应用
      

  5.   

    kypfos(不在寻梦) :
    能留下你的msn或者qq吗?:)
      

  6.   

    看例子吧
    http://fanqiang.chinaunix.net/program/java/2001-08-03/2178.shtml
      

  7.   

    我用idlj工具编译以后,
    执行client的时候还出现以下的问题:
    ERROR: org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No
    org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No
            at com.sun.corba.se.internal.iiop.ConnectionTable.getConnection(Unknown
    Source)
            at com.sun.corba.se.internal.iiop.ConnectionTable.getConnection(Unknown
    Source)
            at com.sun.corba.se.internal.iiop.GIOPImpl.getConnection(Unknown Source)        at com.sun.corba.se.internal.corba.ClientDelegate.createRequest(Unknown
    Source)
            at com.sun.corba.se.internal.corba.ClientDelegate.createRequest(Unknown
    Source)
            at com.sun.corba.se.internal.corba.InitialNamingClient.resolve(Unknown S
    ource)
            at com.sun.corba.se.internal.corba.InitialNamingClient.resolveUsingBoots
    trapProtocol(Unknown Source)
            at com.sun.corba.se.internal.corba.InitialNamingClient.cachedInitialRefe
    rences(Unknown Source)
            at com.sun.corba.se.internal.corba.InitialNamingClient.resolve_initial_r
    eferences(Unknown Source)
            at com.sun.corba.se.internal.corba.ORB.resolve_initial_references(Unknow
    n Source)
            at ChinaServer.main(ChinaServer.java:13)真是困难重重啊
      

  8.   

    给你一个详细的例子:1、编写IDL文件module idl
    {
     
     struct Info
     {
       string sInfo;
     };
     
     
     
     typedef sequence <Info> Infoseq;
     interface Example
     {
       Infoseq getInfos(in long n);
     };
    };2、利用IDL命令编译IDL文件3、编写服务端:
    3.1.实现定义的接口:package com.css.anli.corba.demo.server;
    import idl.*;/**
     * <p>标题: </p>
     * <p>描述: </p>
     * <p>版权: Copyright (c) 2005</p>
     * <p>公司: 中国软件集团</p>
     * 作者 何岸[[email protected]]
     * 版本 1.0
     */
    public class ExampleImpl extends ExamplePOA
    {
      public ExampleImpl(){}
      public idl.Info[] getInfos(int n)
      {
        int size = (n>0) ? n : 0;    String address = "";
        try
        {
          address = java.net.InetAddress.getLocalHost().toString();
        }
        catch(Exception e){}    Info[] infos = new Info[size];
        for(int i=0;i<size;i++)
        {
          infos[i] = new Info("I am info "+i +"  come from ["+ address+"]");
        }
        return infos;
      }
    }3.2编写服务器端package com.css.anli.corba.demo.server;
    import idl.*;
    import java.io.*;
    import org.omg.CosNaming.*;
    import org.omg.CosNaming.NamingContextPackage.*;
    import org.omg.CORBA.*;
    import org.omg.PortableServer.*;
    import org.omg.PortableServer.POA;
    import java.util.Properties;
    /**
     * <p>标题: </p>
     * <p>描述: </p>
     * <p>版权: Copyright (c) 2005</p>
     * <p>公司: 中国软件集团</p>
     * 作者 何岸[[email protected]]
     * 版本 1.0
     */
    public class DemoServer
    {  public static void main(String[] args)
      {
        startServer();
      }  private static void startServer()
      {
        try
        {
          String[] serverPros= {"-ORBInitialPort",
        "1050",
        "-ORBInitialHost",
        "localhost"};      ORB orb = ORB.init(serverPros, null);
          POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
          rootpoa.the_POAManager().activate();
          org.omg.CORBA.Object ref = rootpoa.servant_to_reference(new ExampleImpl());      System.out.println("绑定的命名服务:");
          System.out.println(ref);      //orb.object_to_string(ref);
          org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
          NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);      NameComponent path[] = {new NameComponent("com.css.anli.corba.demo.Example","Object"),
                                  };      ncRef.rebind(path, ref);
          System.out.println("DemoServer ready and waiting ...");
          orb.run();      java.lang.System.currentTimeMillis();
        }
        catch (Exception e)
        {
          System.err.println("ERROR: " + e);
          e.printStackTrace(System.out);
        }
        System.out.println("DemoServer Exiting ...");
      }
    }4、编写客户端package com.css.anli.corba.demo.client;
    import idl.*;
    import org.omg.CosNaming.*;
    import org.omg.CosNaming.NamingContextPackage.*;
    import org.omg.CORBA.*;
    public class DemoClient
    {
      public static void main(String args[])
      {
        if(null==args || args.length<1)
        {
          System.out.println("请传入服务器 IP");
          return;
        }
        try
        {      System.out.println(args[0]);      String[] serverPros= {"-ORBInitialPort",
        "1050",
        "-ORBInitialHost",
        args[0]};
        //"192.9.100.20"};
          ORB orb = ORB.init(serverPros, null);
          org.omg.CORBA.Object objRef =  orb.resolve_initial_references("NameService");      NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);      NameComponent[] path = {new NameComponent("com.css.anli.corba.demo.Example","Object")};
          org.omg.CORBA.Object exampleObj = ncRef.resolve(path);      Example example = ExampleHelper.narrow(exampleObj);
          long st = System.currentTimeMillis();
          Info[] infos = example.getInfos(10000);
          long et = System.currentTimeMillis();
          System.out.println("花费时间: " + (et - st) + "毫秒");
          int n = infos.length;      for(int i=0;i<n;i+=100)
          {
            System.out.println(infos[i].sInfo);
          }
          System.out.println(n);
        }
        catch (Exception e)
        {
          System.out.println("ERROR : " + e) ;
          e.printStackTrace(System.out);
        }
      }
    }5.打包,编写启动命令5.1启动命名服务的命令:
    tnameserv -ORBInitialPort 1050
    5.21 启动服务的命令:
    java -classpath "DemoServer.jar" com.css.anli.corba.demo.server.DemoServer5.3启动客户端:java -classpath "DemoServer.jar" com.css.anli.corba.demo.client.DemoClient 192.9.100.13
    5.2
      

  9.   

    列子我有很多的啊
    但是关键编译idl怎么也不行,idl2java这个工具好象不行啊
      

  10.   

    JSDK的问题,如果是1.4的版本,已经改为了idlj