2013-05-14 54 views
1

我已經通過maven設置了PlayORM。PlayORM Cassandra日期轉換錯誤

我的主要課程基本上是從示例here中複製而來。

每件事都設置得當,看起來不錯,但我得到某種日期轉換錯誤。


堆棧跟蹤如下:

Exception in thread "main" java.lang.NoSuchMethodError: org.joda.time.LocalDateTime.toDate()Ljava/util/Date; 
at com.alvazan.orm.api.base.spi.UniqueKeyGenerator.<clinit>(UniqueKeyGenerator.java:32) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at java.lang.Class.newInstance0(Class.java:355) 
at java.lang.Class.newInstance(Class.java:308) 
at com.alvazan.orm.api.z8spi.meta.ReflectionUtil.create(ReflectionUtil.java:11) 
at com.alvazan.orm.impl.meta.scan.ScannerForField.processId(ScannerForField.java:94) 
at com.alvazan.orm.impl.meta.scan.ScannerForClass.processIdFieldWorks(ScannerForClass.java:235) 
at com.alvazan.orm.impl.meta.scan.ScannerForClass.inspectFieldImpl(ScannerForClass.java:207) 
at com.alvazan.orm.impl.meta.scan.ScannerForClass.inspectField(ScannerForClass.java:194) 
at com.alvazan.orm.impl.meta.scan.ScannerForClass.scanFields(ScannerForClass.java:189) 
at com.alvazan.orm.impl.meta.scan.ScannerForClass.scanSingle(ScannerForClass.java:112) 
at com.alvazan.orm.impl.meta.scan.ScannerForClass.addClass(ScannerForClass.java:69) 
at com.alvazan.orm.layer0.base.MyClassAnnotationDiscoveryListener.scanClass(MyClassAnnotationDiscoveryListener.java:42) 
at com.alvazan.orm.layer0.base.MyClassAnnotationDiscoveryListener.discovered(MyClassAnnotationDiscoveryListener.java:34) 
at com.impetus.annovention.Discoverer.discoverAndIntimateForClassAnnotations(Discoverer.java:197) 
at com.impetus.annovention.Discoverer.discover(Discoverer.java:155) 
at com.alvazan.orm.layer0.base.BaseEntityManagerFactoryImpl.rescan(BaseEntityManagerFactoryImpl.java:80) 
at com.alvazan.orm.layer0.base.BaseEntityManagerFactoryImpl.setup(BaseEntityManagerFactoryImpl.java:131) 
at com.alvazan.orm.impl.bindings.BootstrapImpl.createInstanceImpl(BootstrapImpl.java:64) 
at com.alvazan.orm.impl.bindings.BootstrapImpl.createInstance(BootstrapImpl.java:35) 
at com.alvazan.orm.api.base.Bootstrap.create(Bootstrap.java:57) 
at com.alvazan.orm.api.base.Bootstrap.create(Bootstrap.java:52) 
at com.sample.cass.store.Example.main(Example.java:22) 
+0

NoSuchMethodError始終表示存在不兼容的jar。即。一個客戶端jar用像joda-time 2.0這樣的jar編譯,但是你使用的是另一個沒有該方法的jar,而不是它所編譯的jar。爲了安全起見,請使用gradle,並確保檢查哪些項目帶入了哪些jar並嘗試使用lateste jars(儘管有時候庫文件不幸刪除了方法)。 – 2013-05-16 02:40:44

回答

0

能否請您在這裏複製粘貼您的代碼和完整的錯誤日誌。從你粘貼的日誌看來,這似乎是:

在classpath中有一些不同版本的JodaTime jar,它沒有這個方法。
或者
複製堆棧跟蹤是不完整的問題類似於Can PlayORM take advantage of sequential data layout?,因爲它是在(UniqueKeyGenerator.java的32號線)

+0

雖然目前沒有任何模型或代碼的任何部分直接使用它,但我可以在類路徑中使用版本1.6.2的joda時間。支持哪個版本? 主要代碼基本上是這裏:http://buffalosw.com/wiki/Create-first-entity-using-Cassandra/ – 2013-05-15 08:31:52

+0

嘗試刪除它。 Playorm支持joda-time-2.0 – Easility 2013-05-15 12:35:41

+0

謝謝,這工作 – 2013-05-16 12:20:09

0

拋出的錯誤我有同樣的問題。 原因是「jruby-complete-1.6.5」庫附帶「joda time 1.6.2」。