0

I am developing an Kinesis application which is putting Kinesis Stream data to S3, It is internally using KCL (Kinesis Client Library).It is working fine in Eclipse when i am running it on my local machine.

I exported this project in jar file. While running this Jar file i am getting following error.

below is the stacktrace:

    Exception in thread "main" java.lang.NoClassDefFoundError: com/amazonaws/services/kinesis/clientlibrary/interfaces/IRecordProcessorFactory
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.hadoop.util.RunJar.run(RunJar.java:214)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 4 more

below is pom.xml file:

    <project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.amazonaws</groupId>
  <artifactId>amazon-kinesis-connectors-samples</artifactId>
  <packaging>jar</packaging>
  <name>Amazon Kinesis Connector Library Samples</name>
  <version>1.0.0-SNAPSHOT</version>
  <description>Samples for the Amazon Kinesis Connector Library.</description>
  <url>https://aws.amazon.com/kinesis</url>

  <scm>
    <url>https://github.com/awslabs/amazon-kinesis-connectors.git</url>
  </scm>

  <licenses>
    <license>
      <name>Amazon Software License</name>
      <url>https://aws.amazon.com/asl</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <properties>
    <kinesis-connector.version>1.3.0</kinesis-connector.version>
    <aws-java-sdk.version>1.11.14</aws-java-sdk.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>amazon-kinesis-connectors</artifactId>
      <version>${kinesis-connector.version}</version>
    </dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk</artifactId>
      <version>${aws-java-sdk.version}</version>
    </dependency>

    <!-- Sample Dependencies -->
    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>9.3-1101-jdbc41</version>
    </dependency>
    <dependency>
      <groupId>org.elasticsearch</groupId>
      <artifactId>elasticsearch</artifactId>
      <version>1.2.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.lucene</groupId>
      <artifactId>lucene-core</artifactId>
      <version>4.8.1</version>
    </dependency>

  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.5.1</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>appassembler-maven-plugin</artifactId>
        <version>1.10</version>
        <executions>
          <execution>
            <id>generate-scripts</id>
            <phase>package</phase>
            <goals>
              <goal>assemble</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <programs>
            <program>
              <mainClass>samples.dynamodb.DynamoDBExecutor</mainClass>
              <id>dynamodb-sample</id>
            </program>
            <program>
              <mainClass>samples.s3.S3Executor</mainClass>
              <id>s3-sample</id>
            </program>
            <program>
              <mainClass>samples.elasticsearch.ElasticsearchExecutor</mainClass>
              <id>elastic-search-sample</id>
            </program>
            <program>
              <mainClass>samples.redshiftbasic.RedshiftBasicExecutor</mainClass>
              <id>redshift-basic-sample</id>
            </program>
            <program>
              <mainClass>samples.redshiftmanifest.RedshiftManifestExecutor</mainClass>
              <id>redshift-manifest-sample</id>
            </program>
          </programs>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

Any help is appreciated.

Awadesh
  • 3,530
  • 2
  • 20
  • 32
  • The Kinesis Client Library is probably not included in your JAR. You have to add KCL classes to classpath. Please look into that: https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html – sebast26 Jan 24 '18 at 12:40
  • Thanks for your suggestion, Actually its a maven project and all the required jar files are there, still it needs to do something ? – Awadesh Jan 24 '18 at 13:08
  • Could you include pom.xml and Manifest.mf files in your question? – sebast26 Jan 24 '18 at 14:27
  • @sebast26 HI i have added pom.xml file please have a look over it – Awadesh Jan 25 '18 at 07:50

0 Answers0