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

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