java - Hazelcast 可序列化映射 ClassNotFound 异常

标签 java map classnotfoundexception serializable hazelcast

我正在尝试在一个简单的 Web 应用程序中实现 Hazelcast。

我正在尝试将自定义对象存储到我的 Hazelcast Map 中,并通过必要的导入在我的 Bid 对象类中实现了 Serializable。

import java.io.Serializable;

这是类对象的片段。

public class Bid implements Serializable{

private String bidId;      
private String stock;
private int price;
private String userId;
private Date date;

这里是将 Bid 对象存储到 map 中的教程中的语法,其中 newBid 是 Bid 对象。

Config cfg = new Config();
    HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);    

Map<String, Bid> mapBids = instance.getMap("bids");
        mapBids.put(newBid.getUserId(), newBid);

我的 Hazelcast 节点已启动并正在运行,但当我查询出价 map 时,出现以下错误。

com.hazelcast.nio.serialization.HazelcastSerializationException: java.lang.Class
NotFoundException: aa.Bid
        at com.hazelcast.nio.serialization.DefaultSerializers$ObjectSerializer.r
ead(DefaultSerializers.java:190)
        at com.hazelcast.nio.serialization.StreamSerializerAdapter.read(StreamSe
rializerAdapter.java:59)
        at com.hazelcast.nio.serialization.SerializationServiceImpl.toObject(Ser
ializationServiceImpl.java:221)
        at com.hazelcast.spi.impl.NodeEngineImpl.toObject(NodeEngineImpl.java:15
6)
        at com.hazelcast.map.MapService.toObject(MapService.java:773)
        at com.hazelcast.map.proxy.MapProxyImpl.entrySet(MapProxyImpl.java:502)
        at com.hazelcast.examples.TestApp.handleMapEntries(TestApp.java:882)
        at com.hazelcast.examples.TestApp.handleCommand(TestApp.java:371)
        at com.hazelcast.examples.TestApp.start(TestApp.java:187)
        at com.hazelcast.examples.TestApp.main(TestApp.java:1641)

Caused by: java.lang.ClassNotFoundException: aa.Bid
        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 com.hazelcast.nio.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:109)
        at com.hazelcast.nio.IOUtil$1.resolveClass(IOUtil.java:89)
        at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
        at java.io.ObjectInputStream.readClassDesc(Unknown Source)
        at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
        at java.io.ObjectInputStream.readObject0(Unknown Source)
        at java.io.ObjectInputStream.readObject(Unknown Source)
        at com.hazelcast.nio.serialization.DefaultSerializers$ObjectSerializer.r
ead(DefaultSerializers.java:185)
        ... 9 more

对象类位于与我的 Web 应用程序相同的文件夹中,具有必要的导入语法,但它没有读取它。我也已将 CLASSPATH 添加到我的 Hazelcast jar 文件中。

是否有任何变量必须在我的 Bid 类对象中设置为 Transient 才能使 Serializable 工作?还是我遗漏了什么?

最佳答案

在尝试将“MyClass”的实例放入相关 iMap 时,我在使用远程双节点集群时遇到了同样的问题。我急不可待地想我需要分发包含“MyClass”的 jar,但我意识到问题在于 hazelcast.xml 文件中的定义指定了 OBJECT 的内存格式...

<in-memory-format>OBJECT</in-memory-format>

我将此值更改为 BINARY,一切都开始工作了。

<in-memory-format>BINARY</in-memory-format>

注意。我现在在集群中有许多不同的 map ,其中一些被定义为 OBJECT,一些被定义为 BINARY。

我希望这对外面的人有帮助!

关于java - Hazelcast 可序列化映射 ClassNotFound 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22527389/

相关文章:

Java Selenium 错误 : NoClassDefFoundError: org/openqa/selenium/HasAuthentication

java - 如何设置 rmiregistry 使用的类路径?

java - 如何使用用户给出的参数调用静态方法(反射)

java - Microsoft Graph API : Java SDK- How to use orderby?,用于按lastModifiedDateTime 对driveItems 进行API 调用

java.lang.ClassNotFoundException : com. mulesoft.weave.module.writer.Writer

scala - 迭代器上的Scala映射不会产生副作用

scala - 在 Map 对象上应用方法?

java - mac-osx 10.9.4 Hadoop 2.7.1线程 “main” java.lang.UnsupportedClassVersionError中的异常:不支持的major.minor版本51.0

java - 如果发生异常,Java 线程是否需要清理

c++ - 在 VS、UNIX/Linux 中删除 STL 迭代器后会发生什么情况?