Java8迁移Java17遇CORBA ORB实例化失败问题求助
解决方案
1. 补全Glassfish CORBA依赖包
仅引入glassfish-corba-orb-4.2.1.jar不足以完成ORB初始化,必须同时添加以下核心依赖:
glassfish-corba-internal-api.jarglassfish-corba-omgapi.jarglassfish-corba-util.jarjavax.rmi-api.jar(Java9+环境需用此替代原生CORBA/RMI API)
缺少上述任一依赖,都会导致ORBSingleton实例化失败。
2. 配置完整的VM启动参数
除已设置的参数外,需补充ORB实现类的配置,确保参数添加到Eclipse运行配置的Arguments > VM arguments中:
-Dorg.omg.CORBA.ORBClass=com.sun.corba.ee.impl.orb.ORBImpl -Dorg.omg.CORBA.ORBSingletonClass=com.sun.corba.ee.impl.orb.ORBSingleton
注意不要将参数误填到program arguments区域,否则JVM无法读取配置。
3. 解决Java9+的模块权限问题
Java9及以上版本移除了CORBA模块,若出现类加载权限冲突,需在VM参数中添加:
--add-modules java.se.ee --add-exports java.corba/javax.rmi.CORBA=ALL-UNNAMED --add-exports java.corba/org.omg.CORBA=ALL-UNNAMED --add-exports java.corba/org.omg.CORBA.portable=ALL-UNNAMED --add-exports java.corba/org.omg.CORBA_2_3=ALL-UNNAMED --add-exports java.corba/org.omg.CORBA_2_3.portable=ALL-UNNAMED --add-exports java.corba/org.omg.CosNaming=ALL-UNNAMED
若你的JDK环境完全无java.corba模块,可跳过此步骤。
4. 调整类加载顺序
在Eclipse的Build Path > Order and Export中,将所有Glassfish CORBA相关jar包移至顶部,确保其类加载优先级高于JDK中可能残留的旧CORBA类。
5. 显式初始化ORB(若有自定义代码)
如果项目中存在手动初始化ORB的逻辑,需显式传入配置参数覆盖默认值:
Properties props = new Properties(); props.put("org.omg.CORBA.ORBClass", "com.sun.corba.ee.impl.orb.ORBImpl"); props.put("org.omg.CORBA.ORBSingletonClass", "com.sun.corba.ee.impl.orb.ORBSingleton"); ORB orb = ORB.init(args, props);
内容的提问来源于stack exchange,提问作者Shefali Shrivastava
相关产品推荐
相关产品推荐

