0

当我尝试从 gemfire 实现 CacheListenerAdapter 时出现以下错误。

java.lang.ClassNotFoundException: org.apache.geode.pdx.internal.PdxType

我正在使用以下代码从 gemfire 获取缓存值。

import com.gemstone.gemfire.cache.Declarable; import com.gemstone.gemfire.cache.EntryEvent; import com.gemstone.gemfire.cache.util.CacheListenerAdapter; import com.gemstone.gemfire.pdx.internal.PdxInstanceImpl;

@Override public void afterUpdate(EntryEvent<K, V> event) { addToQueue((PdxInstanceImpl) event.getNewValue()); }

我正在使用addToQueue函数中的以下代码读取价格

Double price = Double.parseDouble(instance.readField("Price").toString());

请注意,我从另一个项目复制了这段代码,我是 gemfire 的新手。我使用上面的代码在窗口中绘制数据。

4

2 回答 2

2

客户端需要运行 v8.2.2 或更高版本。在该版本中添加了将 org.apache.geode 包名称转换为 com.gemstone.gemfire 的代码。

于 2017-06-15T15:08:35.410 回答
0

由于 gemfire 服务器和客户端的 jar 版本不同,您可能会遇到以下错误。

java.lang.ClassNotFoundException: org.apache.geode.pdx.internal.PdxType
        at com.gemstone.gemfire.internal.ClassPathLoader.forName(ClassPathLoader.java:422) ~[gemfire-8.2.0.jar:na]

对于调试问题,您需要检查错误日志

com.gemstone.gemfire.internal.ClassPathLoader.forName(ClassPathLoader.java:422) ~[gemfire-8.2.0.jar:na]

您现在可以看到“gemfire-8.2.0.jar”检查您的服务器版本并根据服务器更改客户端 jar。

于 2017-07-12T16:29:48.510 回答