2013-05-14 56 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”。