1.错误一:java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/coprocessor/CoprocessorService
具体如下:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/coprocessor/CoprocessorService
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
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 org.locationtech.geomesa.hbase.coprocessor.package$.AllCoprocessors$lzycompute(package.scala:28)
at org.locationtech.geomesa.hbase.coprocessor.package$.AllCoprocessors(package.scala:27)
at org.locationtech.geomesa.hbase.index.HBaseFeatureIndex$class.configure(HBaseFeatureIndex.scala:95)
at org.locationtech.geomesa.hbase.index.HBaseZ2Index$.configure(HBaseZ2Index.scala:21)
at org.locationtech.geomesa.hbase.index.HBaseZ2Index$.configure(HBaseZ2Index.scala:21)
at org.locationtech.geomesa.index.geotools.GeoMesaDataStore$$anonfun$onSchemaCreated$1.apply(GeoMesaDataStore.scala:161)
at org.locationtech.geomesa.index.geotools.GeoMesaDataStore$$anonfun$onSchemaCreated$1.apply(GeoMesaDataStore.scala:161)
at scala.collection.immutable.List.foreach(List.scala:381)
at org.locationtech.geomesa.index.geotools.GeoMesaDataStore.onSchemaCreated(GeoMesaDataStore.scala:161)
at org.locationtech.geomesa.index.geotools.MetadataBackedDataStore.createSchema(MetadataBackedDataStore.scala:150)
at org.locationtech.geomesa.index.geotools.GeoMesaDataStore.createSchema(GeoMesaDataStore.scala:178)
at org.locationtech.geomesa.hbase.data.HBaseDataStore.createSchema(HBaseDataStore.scala:54)
at com.zgss.test.Test5.main(Test5.java:31)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.coprocessor.CoprocessorService
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)
... 25 more
解决办法:
以上是缺少hbase 的协处理器的相关包,加上下面的依赖,问题解决。
<dependency>
<groupId>com.aliyun.hbase</groupId>
<artifactId>alihbase-endpoint</artifactId>
<version>2.0.0</version>
</dependency>
2.错误二:java.lang.NoSuchMethodError: org.geotools.factory.FactoryRegistry.getFactory(Ljava/lang/Class;Ljava/util/function/Predicate;Lorg/geotools/factory/Hints;Lorg/geotools/factory/Hints$Key;)Ljava/lang/Object;
如下:
Exception in thread "main" java.lang.NoSuchMethodError: org.geotools.factory.FactoryRegistry.getFactory(Ljava/lang/Class;Ljava/util/function/Predicate;Lorg/geotools/factory/Hints;Lorg/geotools/factory/Hints$Key;)Ljava/lang/Object;
at org.geotools.factory.CommonFactoryFinder.lookup(CommonFactoryFinder.java:329)
at org.geotools.factory.CommonFactoryFinder.getFilterFactory(CommonFactoryFinder.java:284)
at org.geotools.factory.CommonFactoryFinder.getFilterFactory2(CommonFactoryFinder.java:370)
at org.geotools.factory.CommonFactoryFinder.getFilterFactory2(CommonFactoryFinder.java:383)
at org.geotools.data.DataUtilities.<clinit>(DataUtilities.java:204)
at com.zgss.test.Test5.main(Test5.java:30)
解决办法:
jar包冲突,把gt-data的jar包去掉就好了。
错误三:java.util.NoSuchElementException: key not found: class org.locationtech.jts.geom.Point
Exception in thread "main" java.util.NoSuchElementException: key not found: class org.locationtech.jts.geom.Point
at scala.collection.MapLike$class.default(MapLike.scala:228)
at scala.collection.AbstractMap.default(Map.scala:59)
at scala.collection.MapLike$class.apply(MapLike.scala:141)
at scala.collection.AbstractMap.apply(Map.scala:59)
at org.locationtech.geomesa.utils.geotools.AttributeSpec$class.getClassSpec(SimpleFeatureSpec.scala:85)
at org.locationtech.geomesa.utils.geotools.AttributeSpec$GeomAttributeSpec.getClassSpec(SimpleFeatureSpec.scala:156)
at org.locationtech.geomesa.utils.geotools.AttributeSpec$class.toSpec(SimpleFeatureSpec.scala:59)
at org.locationtech.geomesa.utils.geotools.AttributeSpec$GeomAttributeSpec.toSpec(SimpleFeatureSpec.scala:160)
at org.locationtech.geomesa.utils.geotools.SimpleFeatureTypes$.encodeDescriptor(SimpleFeatureTypes.scala:166)
at org.locationtech.geomesa.utils.geotools.SimpleFeatureTypes$$anonfun$encodeType$1.apply(SimpleFeatureTypes.scala:162)
at org.locationtech.geomesa.utils.geotools.SimpleFeatureTypes$$anonfun$encodeType$1.apply(SimpleFeatureTypes.scala:162)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
at scala.collection.Iterator$class.foreach(Iterator.scala:742)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1194)
at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:245)
at scala.collection.AbstractTraversable.map(Traversable.scala:104)
at org.locationtech.geomesa.utils.geotools.SimpleFeatureTypes$.encodeType(SimpleFeatureTypes.scala:162)
at org.locationtech.geomesa.index.geotools.MetadataBackedDataStore.writeMetadata(MetadataBackedDataStore.scala:391)
at org.locationtech.geomesa.index.geotools.MetadataBackedDataStore.createSchema(MetadataBackedDataStore.scala:141)
at org.locationtech.geomesa.index.geotools.GeoMesaDataStore.createSchema(GeoMesaDataStore.scala:178)
at org.locationtech.geomesa.hbase.data.HBaseDataStore.createSchema(HBaseDataStore.scala:54)
at org.locationtech.geomesa.hbase.data.HBaseDataStore.createSchema(HBaseDataStore.scala:29)
at com.zgss.test.Test5.main(Test5.java:33)
解决办法:
我在代码里引入的包明明是com.vividsolutions.jts.geom.Point,可这里一直在找org.locationtech.jts.geom.Point,找了好久,最后把geotools的相关jar包全给删除,问题解决了,出现这种错误,一般都是jar包冲突,仔细找一定会找到。
本人用geomesa 操作hbase ,写代码有很多错误,网上资料也很少,这里先写几个,供后人参考,后面遇到其它错误了在添加吧。