在Websphere上打开HFT Chronicle Map,Class Not Found Exception

时间:2016-05-30 08:49:40

标签: java websphere chronicle-map

我正在尝试使用OpenHFT ChronicleMap,代码在Tomcat中运行,但在Websphere中失败并出现以下错误(下面)

注意:这不会发生在Tomcat中,只能在Websphere中发生。

代码:

private ChronicleMap<String,RepositoryItem> repositoryMap;

repositoryMap=
            ChronicleMapBuilder
            .of(String.class, RepositoryItem.class).averageKeySize(KEY_SAMPLE.getBytes("UTF-8").length)
            .entries((long) (MAX_ENTRIES))
            .averageValueSize(1600)
            .create();

public void removeAllModified() {
    // This removes all the modified data from the repository
    Iterator iter=repositoryMap.values().iterator();
    // build a list of all the objects in the repository except the removed items
    while (iter.hasNext()){
        RepositoryItem repoItem=(RepositoryItem)iter.next();
        DataObject d = repoItem.getModified();
        if (d != null) {
            removeModified(repoItem);
        }
    }
}

任何人都可以帮我解决此错误。

SystemErr     R     at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1862)
[5/30/16 12:45:03:236 IST] 0000007a SystemErr     R Caused by: java.lang.ClassNotFoundException: java.lang.AbstractStringBuilder
[5/30/16 12:45:03:236 IST] 0000007a SystemErr     R     at java.lang.Class.forName(Class.java:182)
[5/30/16 12:45:03:236 IST] 0000007a SystemErr     R     at net.openhft.lang.io.StringBuilderUtils.<clinit>(StringBuilderUtils.java:36)
[5/30/16 12:45:03:236 IST] 0000007a SystemErr     R     ... 81 more
[5/30/16 12:45:03:267 IST] 0000007a SystemErr     R java.lang.NoClassDefFoundError: net.openhft.lang.io.StringBuilderUtils (initialization failure)
[5/30/16 12:45:03:267 IST] 0000007a SystemErr     R     at java.lang.J9VMInternals.initialize(J9VMInternals.java:176)
[5/30/16 12:45:03:267 IST] 0000007a SystemErr     R     at net.openhft.lang.io.NativeBytes.readUTF1(NativeBytes.java:173)
[5/30/16 12:45:03:267 IST] 0000007a SystemErr     R     at net.openhft.lang.io.NativeBytes.readUTF0(NativeBytes.java:164)
[5/30/16 12:45:03:267 IST] 0000007a SystemErr     R     at net.openhft.chronicle.hash.serialization.internal.CharSequenceReader.read(CharSequenceReader.java:67)
[5/30/16 12:45:03:267 IST] 0000007a SystemErr     R     at net.openhft.chronicle.hash.serialization.internal.CharSequenceReader.read(CharSequenceReader.java:31)
[5/30/16 12:45:03:267 IST] 0000007a SystemErr     R     at net.openhft.chronicle.map.VanillaChronicleMap$Segment.getEntry(VanillaChronicleMap.java:3042)
[5/30/16 12:45:03:267 IST] 0000007a SystemErr     R     at net.openhft.chronicle.map.VanillaChronicleMap$EntryIterator.next(VanillaChronicleMap.java:3150)
[5/30/16 12:45:03:267 IST] 0000007a SystemErr     R     at net.openhft.chronicle.map.VanillaChronicleMap$EntryIterator.next(VanillaChronicleMap.java:3097)
[5/30/16 12:45:03:267 IST] 0000007a SystemErr     R     at java.util.AbstractMap$2$1.next(AbstractMap.java:396)
[5/30/16 12:45:03:267 IST] 0000007a SystemErr     R     at com.csc.fs.om.ObjectRepositoryChronicleImpl.removeAllModified(ObjectRepositoryChronicleImpl.java:1335)

1 个答案:

答案 0 :(得分:0)

Chronicle Map目前不支持运行Websphere的IBM JVM。从您的消息中可以明显看出,Chronicle Map 2在IBM JVM上失败,因为它偶尔会使用一些在OpenJDK / OracleJDK中存在但在IBM JDK中不存在的类。

Chronicle Map 3可能没有这个问题,因此可能的解决办法可能是升级到Java 8和Chronicle Map 3.但是,这将是Chronicle Map 3的偶然属性,它也可能在任何后续版本中停止使用IBM JVM释放。

“纪事”邮件列表中的重新讨论:https://groups.google.com/forum/#!topic/java-chronicle/cAHVQZLASaE