CORBA/Web Start 应用程序不再适用于 Java 7u55

Posted

技术标签:

【中文标题】CORBA/Web Start 应用程序不再适用于 Java 7u55【英文标题】:CORBA/Webstart application doesn't work with Java7u55 anymore 【发布时间】:2014-04-25 14:50:27 【问题描述】:

我的使用替代 ORB 实现 (OpenORB) 的 CORBA/Webstart 应用程序不再适用于 Java7u55。

出现以下异常:

Error org.omg.CORBA.INITIALIZE: can't instantiate default ORB implementation org.openorb.CORBA.ORBSingleton  vmcid: 0x0  minor code: 0  completed: No
org.omg.CORBA.INITIALIZE: can't instantiate default ORB implementation org.openorb.CORBA.ORBSingleton  vmcid: 0x0  minor code: 0  completed: No
    at org.omg.CORBA.ORB.create_impl_with_systemclassloader(Unknown Source)
    at org.omg.CORBA.ORB.init(Unknown Source)
    at org.openorb.CORBA.kernel.OpenORBLoader.init(Unknown Source)
    at org.openorb.CORBA.ORB.set_parameters(Unknown Source)
    at org.omg.CORBA.ORB.init(Unknown Source)
        ...
Caused by: java.lang.ClassNotFoundException: org.openorb.CORBA.ORBSingleton
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    ... 17 more

我认为 orb.omg.CORBA.ORB.init() 的更改是不再找到 ORB 实现的类的原因,因为现在在这里使用 SystemClassLoader 来创建 ORB 实例而不是当前线程的 ContextClassLoader 作为之前。

作为一种解决方法,我已将包含我正在使用的 ORB 实现的 org.omg.CORBA API 的 Jar 复制到 <jre-home>/lib/endorsed/,希望它会被使用,但仍然使用 rt.jar 中的实现。

任何想法如何解决这个问题?

【问题讨论】:

另见***.com/questions/23217131/… 【参考方案1】:

最后我找到了一种解决方法,它不适用于当前使用的 OpenORB,但适用于 JacORB (3.4)。

Oracle 显然更新了发行说明,建议仅配置 org.omg.CORBA.ORBClass 属性但省略 org.omg.CORBA.ORBSingletonClass,这意味着将使用 Java 附带的默认单例实现,这对 SystemClassLoader 可见。

这可能不适用于所有 ORB,实际上它不适用于 OpenORB,因为它会检查 org.omg.CORBA.ORBSingletonClass,但我的应用程序现在可以正常使用提到的 JacORB 版本。

【讨论】:

【参考方案2】:

应该有几种解决方法:

    在启动应用时指定以下 VM 参数:-Djava.endorsed.dirs=/path/to/your/corba_library_jars_folder

    在启动应用程序时指定以下 VM 参数: -Xbootclasspath/p:/path/to/your/corba_lib.jar:/path/to/your/corba_lib2.jar:...

    将您的 jar 复制到 $JAVA_HOME/jre/lib/endorsed 目录(如果不存在则创建它)

【讨论】:

感谢您的提示,但正如我所写,我已经尝试了建议 3,但它不起作用。我也尝试过建议 1,但由于它是一个使用 jawaws -J 传递参数的 webstart 应用程序 - 应用程序挂起。 我过去曾在非 webstart 应用程序中使用过建议 3,但我会尝试一下。当我签署我的 JNLP 时,它可能是一个替代方案。

以上是关于CORBA/Web Start 应用程序不再适用于 Java 7u55的主要内容,如果未能解决你的问题,请参考以下文章

YouTube 嵌入 UIWebViews 不再适用于 iOS

Cordova:getUserMedia() 不再适用于不安全的来源

扩展/收缩 UITableViewCell 高度不再适用于 iOS7

使用 URI 从“共享/传输”访问文件不再适用于 WP8 应用程序

简单的反应适用于 npm start 但不适用于 nohup npm start &

Facebook 登录按钮(在 LOCALHOST 上。):登录按钮插件不再适用于 http 页面