通过maven创建jar问题

问题描述:

嗨,通过maven创建jar问题

我正在尝试使用maven创建可执行jar。创建罐子,当我尝试执行Java的罐子myjar这一我得到以下错误

引起的:在java.net.URLClassLoader的org.apache.hadoop.conf.Configuration :抛出java.lang.ClassNotFoundException $ 1.run(URLClassLoader.java:202)

我提取了jar,看到hadoop类不存在。并在日志中我可以看到Hadoop的罐子不会被复制。哪里出了问题

我的pom.xml如下:

<构建>

<插件>

<插件>

<groupId> org.apache.maven.plugins < /的groupId >
<的artifactId >行家编译-插件</artifactId的>
<版本2.3.1 > < /版本>
<配置>
<源> 1.6 </source >
<target> 1.6 </tar得到>
< /配置>
< /插件>
<插件>
<的groupId > org.apache.maven.plugins < /的groupId >
<的artifactId >行家组装-插件</artifactId的>
<版本> 2。2-β-4 < /版本>
<配置>
<descriptorRefs>
<descriptorRef>罐与 - 依赖性</descriptorRef >
</descriptorRefs >
<归档>
<清单>
<mainClass> com.MyClass </mainClass >
< /清单>
< /存档>
< /配置>
<处决> <执行>
<相>包< /相位>
个<目标>
<目标>单< /目标>
< /两球>
< /执行>
< /执行>
< /插件>
< /插件>
< /建>

<!-- 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> 
` 

您指定的Hadoop的罐子作为具有<scope>provided</scope>一个范围的依赖性。
这意味着它们将在运行时位于类路径上,如果你希望它们被包含在你的jar中,那么删除scope标签并接受的默认范围编译

请参阅http://maven.apache.org/pom.html