Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [geomesa-users] Using the Java API - NoClassDefFoundError

Connor,

You are welcome, I'm glad that did it.

You need the geomesa-core artifact.
We have recently changed the way we support accumulo version and the name of the artifact for accumulo1.5 is:

<dependency>
    <groupId>geomesa</groupId>
    <artifactId>geomesa-core-accumulo1.5</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</dependency>

Hunter

On 05/21/2014 07:47 PM, Connor Manning wrote:
Hi Hunter, thanks for that - explicitly including Hadoop solved that issue.

I have a further question now - previously my project was manually
managed without Maven and I've since converted it (due to run-time
ClassDefNotFound errors that were likely caused by improperly managed
jars).

So what is the proper was to introduce a Maven dependency on a locally
installed GeoMesa so I can make use of the full API?  Is there perhaps
a sample pom somewhere that illustrates this?  My initial inclination
was:

       <dependency>
          <groupId>geomesa</groupId>
          <artifactId>geomesa</artifactId>
          <version>1.0.0-SNAPSHOT</version>
          <scope>system</scope>
          <systemPath>/Users/connor/code/geomesa/geomesa-dist/target/geomesa-dist-1.0.0-SNAPSHOT.jar</systemPath>
          <type>jar</type>
       </dependency>

But this is not correct, and it does not pull in all of GeoMesa's
dependencies.  I would assume there's a better way than adding a
similar block for each Jar nested in
geomesa-dist-1.0.0-SNAPSHOT-distribution.tar.gz.

Thanks for your help and patience,
Connor

On Mon, May 19, 2014 at 7:45 AM, Hunter Provyn <fhp@xxxxxxxx> wrote:
Hi Connor,

The short answer is yes, you need to add the hadoop client not to the
accumulo iterators lib/ext but as a compiled dependency in your project
itself.
GeoMesa depends on the hadoop-client but does not include it in the jar.
If you add the following to the pom of your project, that should resolve the
issue:

<dependency>
             <groupId>org.apache.hadoop</groupId>
             <artifactId>hadoop-client</artifactId>
             <version>2.2.0</version>
</dependency>

Hunter


On 05/17/2014 05:21 PM, Connor Manning wrote:

Hello, I am trying to get some basic functionality for writing and reading
with GeoMesa from Java.  I'm working from documentation.pdf in the
geomesa-dist/target area.

I've extracted
geomesa/geomesa-dist/target/geomesa-dist-1.0.0-SNAPSHOT-distribution.tar.gz
after doing a Maven install, and then I have placed all of the
subdirectories from there in my Java classpath (according to Section 2.3 in
the documentation).

Then I wrote a small Java program that just creates a DataStore like in
Section 3, which builds with no errors - however when running it there are
many errors.  I am just trying a mock Accumulo instance for now, but I do
have Accumulo, Hadoop, and Zookeeper installed.

It looks like the root cause of the failure is
"java.lang.ClassNotFoundException: org.apache.hadoop.io.Writable".  Do I
need to add libraries from my Hadoop installation in addition to the HDFS
jar in geomesa-dist?

Attached are my simple Java file I'm trying to run, the terminal output, and
brief build/run scripts to demonstrate what my classpath looks like.

Thanks for any pointers in the right direction,
Connor


_______________________________________________
geomesa-users mailing list
geomesa-users@xxxxxxxxxxxxxxxx
http://www.locationtech.org/mailman/listinfo/geomesa-users



_______________________________________________
geomesa-users mailing list
geomesa-users@xxxxxxxxxxxxxxxx
http://www.locationtech.org/mailman/listinfo/geomesa-users




Back to the top