首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle 5 (1.7.0_05)在连接到Javaspace (JINI)时没有在SuSELinuxEnterpriseServer11.JINI上工作

Oracle 5 (1.7.0_05)在连接到Javaspace (JINI)时没有在SuSELinuxEnterpriseServer11.JINI上工作
EN

Stack Overflow用户
提问于 2014-06-21 13:53:54
回答 1查看 324关注 0票数 0

我们试图从SUSE 11 (java-1_7_0-ibm)运行一个进程(broker),它连接到部署在另一台Linux机器上的Javaspace黑板(JINI)。(CentOs与开放JDK“1.7.0_05-冰茶”版本)

代码语言:javascript
复制
Stack Trace :
INFO: Starting broker
Exception in thread "main" java.lang.ExceptionInInitializerError
            at java.lang.J9VMInternals.initialize(J9VMInternals.java:259)
            at net.jini.jeri.BasicInvocationHandler.invokeRemoteMethod(BasicInvocationHandler.java:653)
            at net.jini.jeri.BasicInvocationHandler.invoke(BasicInvocationHandler.java:528)
            at com.sun.jini.reggie.$Proxy0.lookup(Unknown Source)
            at com.sun.jini.reggie.RegistrarProxy.lookup(RegistrarProxy.java:128)
            at edu.vt.ndssl.blackboard.JiniSpaceService.findSpace(JiniSpaceService.java:372)
            at edu.vt.ndssl.blackboard.JiniSpaceService.<init>(JiniSpaceService.java:74)
            at edu.vt.ndssl.blackboard.JavaSpaceBlackboard.<init>(JavaSpaceBlackboard.java:31)
            at edu.vt.ndssl.blackboard.BlackboardFactory.make(BlackboardFactory.java:28)
            at edu.vt.ndssl.broker.Broker.<init>(Broker.java:53)
            at edu.vt.ndssl.broker.Broker.main(Broker.java:231)
Caused by: java.lang.RuntimeException: Unexpected exception
            at com.sun.jini.logging.Levels.createLevel(Levels.java:142)
            at com.sun.jini.logging.Levels.<clinit>(Levels.java:52)
            at java.lang.J9VMInternals.initializeImpl(Native Method)
            at java.lang.J9VMInternals.initialize(J9VMInternals.java:237)
            ... 10 more
Caused by: java.io.EOFException
            at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2667)
            at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1387)
            at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2059)
            at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1984)
            at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1867)
            at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1419)
            at java.io.ObjectInputStream.readObject(ObjectInputStream.java:420)
            at com.sun.jini.logging.Levels.createLevel(Levels.java:138)
            ... 13 more

同样的代码也适用于26版本的Java1.6版本。我希望在上安装一个正确的Java版本,它将与此操作系统兼容,也相当于Oracle 5或Open版本1.7.0_05 (iced茶)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-22 00:47:59

显然,造成此问题的根本原因是Oracle对com.sun.jini.logging.Levels类的序列化格式进行了不兼容的更改。据报道,这一变化发生在Oracle 1.6.0_38和JDK 1.7.0_13中,而且据推测,它也被纳入了最近的OpenJDK版本。

这个问题体现在使用JINI的各种项目中。示例:

通过搜索"com.sun.jini.logging.Levels EOFException“可以找到更多的示例。

我不能说对你来说解决方案是什么,但我有几个想法:

回避:我认为如果您不将应用程序网络中的前后JVM版本混合在一起,就可以避免这个问题。

如果需要升级应用程序JVM,我建议您全部升级,然后对JINI应用程序和服务进行完全关闭/重新启动。

修复您的应用程序:看来Apache项目通过修改JINI代码解决了问题。正如发行票所说:

com.sun.jini.logging.Levels类使用最新版本的RuntimeException ( 1.6和1.7)生成RuntimeException。这个问题涉及自定义java.util.logging.Level的创建。当前的实现使用ClassReplacingObjectOutputStream和LevelData方法。通过删除此方法并创建java.util.logging.Level的子类,问题将得到解决。

发行票对实现这一目标的最佳方法进行了大量讨论,提出了补丁,并链接到他们实际实现修复的签入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24342263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档