2017-06-15 54 views
0

當我試圖從gemfire實現CacheListenerAdapter時出現以下錯誤。Gemfire CacheListenerAdapter實現ClassNotFoundException:org.apache.geode.pdx.internal.PdxType

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。我使用上面的代碼在一個窗口中繪製數據。

+1

您在客戶端和服務器上運行的GemFire版本是什麼?看起來您可能在客戶端上有8.2,而在服務器上可能有9.x,因爲產品的軟件包名稱在這些版本之間發生了變化。有一個向後兼容的層,所以我認爲這不應該是一個問題,但請你能提供那個細節。 –

回答

2

客戶端需要運行v8.2.2或更高版本。在該版本中添加了將org.apache.geode軟件包名稱轉換爲com.gemstone.gemfire的代碼。

+0

我正在使用客戶端v8.1.0現在我更新到v8.2.2,一切工作正常。謝謝您的幫助! – Unnikrishnan

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」現在檢查服務器版本和更改客戶端的水瓶中每個服務器。