1

HI,

I am trying to creating executable jar using maven. The jar is created and when i try to execute java -jar myjar i get the following error

Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration at java.net.URLClassLoader$1.run(URLClassLoader.java:202)

I extracted the jar and see that hadoop classes are not present. And in the logs i could see that hadoop jars are not copied .where is the problem

My pom.xml is as follows :

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.MyClass</mainClass>
</manifest>
</archive>
</configuration>
<executions> <execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

 <!-- Compile time dependencies --> <dependency> <groupId>bixo</groupId> <artifactId>bixo-core</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>cascading</groupId> <artifactId>cascading-core</artifactId> </dependency> <dependency> <groupId>cascading</groupId> <artifactId>cascading-11-jdbc</artifactId> <version>0.0.4</version> </dependency> <dependency> <groupId>hsqldb</groupId> <artifactId>hsqldb</artifactId> <version>1.8.0.7</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> </dependency> <dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-parsers</artifactId> <version>0.8</version> </dependency> <dependency> <groupId>org.archive</groupId> <artifactId>heritrix</artifactId> <version>1.14.3</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.14</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>org.kohsuke</groupId> <artifactId>args4j</artifactId> <version>2.0.10</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-core</artifactId> <version>0.21.0-SNAPSHOT</version> <scope>provided</scope> <exclusions> <exclusion> <artifactId>jetty</artifactId> <groupId>org.mortbay.jetty</groupId> </exclusion> <exclusion> <artifactId>jetty-util</artifactId> <groupId>org.mortbay.jetty</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapred</artifactId> <version>0.21.0-SNAPSHOT</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>0.21.0-SNAPSHOT</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <!-- Eclipse project generation dependencies --> <dependency> <groupId>ant-eclipse</groupId> <artifactId>ant-eclipse-jvm1.2</artifactId> <version>1.0</version> <scope>eclipse</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>2.4.1</version> </dependency> <dependency> <groupId>cascading</groupId> <artifactId>cascading-core</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>cascading</groupId> <artifactId>cascading-test</artifactId> <version>1.1.1</version> </dependency> </dependencies> </dependencyManagement> ` 

1 Answer 1

1

You've specified the hadoop jars as dependencies with a scope of <scope>provided</scope>.
This implies that they will be on the classpath at runtime, if you want them to be included in your jar, then remove the scope tags and accept the default scope of compile.

see http://maven.apache.org/pom.html

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.