2014-06-19 29 views
0

無論出於什麼原因,我似乎無法運行我的jar文件而未收到ClassNotFound異常。我是Maven的新手,所以我認爲這個問題可能是由我的POM.XML文件引起的。請允許我詳細說明。我已將問題隔離到示例HelloWorld日誌中。Commons Logging - ClassNotFoundException

package com; 

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

public class HelloLog { 
    public static Log log = LogFactory.getLog(HelloLog.class); 

    public static void main(String[] args){ 
     log.info("Hello World!"); 
    } 
} 

我也簡化了我的pom.xml只有兩個依賴關係。

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>--MygroupId--</groupId> 
    <artifactId>--MyArtID--</artifactId> 
    <version>--MyVer--</version> 
    <dependencies> 
    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.1.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.0-api</artifactId> 
     <version>1.0.1.Final</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <resources> 
     <resource> 
     <directory>src</directory> 
     <excludes> 
      <exclude>**/*.java</exclude> 
     </excludes> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.4</version> 
      <configuration> 
       <archive> 
       <manifest> 
        <addClasspath>true</addClasspath> 
        <classpathPrefix>lib</classpathPrefix> 
        <mainClass>com.HelloLog</mainClass> 
       </manifest> 
       </archive> 
      </configuration> 
      </plugin> 
      <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <verbose>true</verbose> 
       <fork>true</fork> 
       <compilerVersion>1.6</compilerVersion> 
      </configuration> 
      </plugin> 
      <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.5.1</version> 
      <executions> 
       <execution> 
       <id>copy-dependencies</id> 
       <phase>package</phase> 
       <goals> 
        <goal>copy-dependencies</goal> 
       </goals> 
       <configuration> 
        <outputDirectory> 
            ${project.build.directory}/dependency-jars/ 
        </outputDirectory> 
        <overWriteReleases>false</overWriteReleases> 
        <overWriteSnapshots>false</overWriteSnapshots> 
        <overWriteIfNewer>true</overWriteIfNewer> 
       </configuration> 
       </execution> 
      </executions> 
      </plugin> 
    </plugins> 
    <pluginManagement> 
     <plugins> 
      <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.--> 
      <plugin> 
       <groupId>org.eclipse.m2e</groupId> 
       <artifactId>lifecycle-mapping</artifactId> 
       <version>1.0.0</version> 
       <configuration> 
        <lifecycleMappingMetadata> 
         <pluginExecutions> 
          <pluginExecution> 
           <pluginExecutionFilter> 
            <groupId> 
             org.apache.maven.plugins 
            </groupId> 
            <artifactId> 
             maven-dependency-plugin 
            </artifactId> 
            <versionRange> 
             [2.5.1,) 
            </versionRange> 
            <goals> 
             <goal>copy-dependencies</goal> 
            </goals> 
           </pluginExecutionFilter> 
           <action> 
            <ignore></ignore> 
           </action> 
          </pluginExecution> 
         </pluginExecutions> 
        </lifecycleMappingMetadata> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
    </build> 
</project> 

當我在Eclipse中運行HelloLog類時,一切都很好,我得到了預期的輸出結果。但是,當我在Jar文件上執行java -jar時,我在第7行的LogFactory上收到了ClasNotFoundException。該jar文件伴隨着目標文件夾中的dependency-jars文件夾。 dependency-jars文件夾包含這兩個依賴項。

+0

發現問題,在pom.xml中出現問題;當我複製依賴關係時指定了不同的classpathPrefix。 – Vidalia

回答

0

發現問題,這是Maven相關。沒有注意到我的classpathPrefix被設置爲lib。我將依賴關係輸出到dependency-jar。

相關問題