Исключение в потоке "main" java.lang.NoClassDefFoundError: org / apache / log4j / Logger в сгенерированном файле JAR - PullRequest
0 голосов
/ 29 мая 2018

Я сгенерировал файл jar с Maven в IntelliJ IDEA.Я получаю следующее сообщение об ошибке при попытке выполнить его:

Исключение в потоке "main" java.lang.NoClassDefFoundError: org / apache / log4j / Logger

Я используютолько одна версия log4j, 1.2.17 и версия java 1.8.0_171.Я также установил пропуск тестов в pom.xml: <maven.test.skip>true</maven.test.skip> Выполнение выполнено напрямую из IDE.Я использую плагин Maven Surefire:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
            <skipTests>true</skipTests>
        </configuration>
    </plugin>

1 Ответ

0 голосов
/ 29 мая 2018

Когда вы запускаете его из IDEA, зависимости включены в IDEA, вы можете проверить команду в Запустить Окно инструментов IDEA.Но когда вы генерируете jar и запускаете его, в него не включаются зависимости.Чтобы заставить его работать, вы должны указать Maven включить их, один из способов сделать это - использовать Плагин сборки Apache Maven , добавив раздел build в ваш pom.xml :

<build>
  <plugins>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <configuration>
        <archive>
          <manifest>
            <mainClass>package.MainClass</mainClass>
          </manifest>
        </archive>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
      </configuration>
    </plugin>
  </plugins>
</build>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...