2014-10-04 3 views
1

Привет Я пытаюсь создать файл JAR, который имеет несколько основных классов, которые я могу бежать. Я строю с Maven и моей pom.xml выглядит следующим образом:Maven Classpath Log4J NoClassDefFoundError

http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0 ch.uzh.ifi .CE CombinatorialAuction 1,0 Комбинаторные Аукцион

<plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.5</version> 

     </plugin> 

    </plugins> 
</build> 
<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <sonar.language>java</sonar.language> 
    <sonar.jdbc.url> 
     jdbc:h2:tcp://localhost:9092/sonar 
    </sonar.jdbc.url> 
    <sonar.host.url> 
     http://localhost:9000 
    </sonar.host.url> 
</properties> 

<dependencies> 



    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-core</artifactId> 
     <version>2.0.2</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-api</artifactId> 
     <version>2.0.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.7.7</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.7.7</version> 
    </dependency> 

</dependencies> 

Я затем попытаться запустить основной класс с помощью следующей команды

java -cp CombinatorialAuction-1.0.jar ch.uzh.ifi.ce.cca.bneexecution.SingleBNERunner 

Однако я получаю следующее исключение, которое указывает, что зависимости, кажется, не работает.

java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 

Любая помощь очень ценится.

ответ

0

Я думаю, что ваш pom.xml отсутствует зависимость от SLF4J API:

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.7</version> 
</dependency> 

Немного странно, что slf4j-log4j12 не приносит эту зависимость, хотя.

+0

Нет, это не помогло – benehsv

+0

В любом случае, эти Log4J 2 JARs бесполезны для 'slf4j-log4j12', так как используют артефакты log4j: log4j' (Log4J 1.2). Вы можете попробовать включить Log4J 1.2 вместо Log4J 2. – gpeche

0

Так что я понял это. Проблема заключалась в том, что зависимости не были упакованы в банку ... (Глупо от меня). Я использовал теневой плагин, чтобы создать банку с зависимостями.

Смежные вопросы