gpt4 book ai didi

java - Oracle JDK Update 5 (1.7.0_05) 无法在 SUSE Linux Enterprise Server 11 上运行。连接到 Javaspace Blackboard (JINI) 时出现 EOFException

转载 作者:太空宇宙 更新时间:2023-11-04 03:57:00 28 4
gpt4 key购买 nike

我们正在尝试从 SUSE Linux Enterprise Server 11 (java-1_7_0-ibm) 运行一个进程(代理),该进程连接到部署在另一台 Linux 计算机上的 Javaspace Blackboard (JINI)。 (CentOs 以及 Open JDK“1.7.0_05-icedtea” 版本)

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

相同的代码可以在 Java 1.6 版本(最高 26)上正常工作。我正在寻找要在 SUSE Linux Enterprise Server 上安装的正确 Java 版本,该版本将与此操作系统兼容,并且也相当于 Oracle JDK Update 5Open JDK 版本 1.7.0_05 (icedtea)

最佳答案

显然,问题的根本原因是Oracle对com.sun.jini.logging.Levels类的序列化格式进行了不兼容的更改。据报道,这一变化发生在 Oracle JDK 1.6.0_38 和 JDK 1.7.0_13 中,并且可能也出现在最新的 OpenJDK 版本中。

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

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

<小时/>

我无法说出适合您的解决方案,但我有几个想法:

避免:我认为如果不在应用程序网络中混合更改前后的 JVM 版本,就可以避免该问题。

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

修复您的应用程序:Apache River 项目似乎通过修改 JINI 代码修复了该问题。作为issue ticket说:

The com.sun.jini.logging.Levels class produces a RuntimeException with the latest version of Java (both 1.6 and 1.7). The issue surrounds creation of custom java.util.logging.Level. The current implementation uses a ClassReplacingObjectOutputStream and the LevelData approach. By removing this approach and creating a subclass of java.util.logging.Level the issue gets resolved.

issue ticket关于实现此目的的最佳方法、建议的补丁以及实际实现修复的 checkin 链接进行了很多讨论。

关于java - Oracle JDK Update 5 (1.7.0_05) 无法在 SUSE Linux Enterprise Server 11 上运行。连接到 Javaspace Blackboard (JINI) 时出现 EOFException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24342263/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com