Ошибка при попытке запустить упакованный Jar (Maven)

У меня возникла проблема с запуском JAR-файла, который я упаковал с помощью Maven. Это очень простой класс, который просто берет файл из каталога на локальном компьютере и отправляет его на SFTP.

Я использую команду «mvn package» и вижу, что JAR появляется в моей целевой папке, но когда я пытаюсь запустить JAR, я получаю следующую ошибку:

«Исключение в потоке «основной» java.lang.NoClassDefFoundError: com/jcraft/jsch/Jsch at. java.lang.Class.getDeclaredMethods0 и т. д.

Вызвано: java.lang.ClassNotFoundException: com.jcraft.jsch.Jsch"

Теперь программа работает нормально, когда я запускаю ее в eclipse, просто запуская основной метод, поэтому я предполагаю, что это что-то с командой пакета maven, которая не вносит все правильные классы в мой JAR? В моих «Зависимостях Maven» все, что у меня есть, это «jsch-0.1.49.jar» и «junit-3.8.1.jar». Любая помощь будет принята с благодарностью. Я уверен, что есть шаг, который я пропустил где-то в этом процессе.


person parchambeau    schedule 16.05.2013    source источник


Ответы (1)


Команда пакета maven и плагин maven-jar-plugin не создавали файлы jar с прикрепленными зависимостями. Они просто создают файл jar с исходниками вашего проекта.

Вам нужна банка убер, которая состоит из всего, что нужно вашему основному классу. Самый простой способ заархивировать это — использовать maven-shade-plugin:

<project>
   ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>
person mszalbach    schedule 16.05.2013
comment
Потрясающий ответ, понял, что такое maven, отлично сработал. Не мог бы просить ничего лучше. Спасибо. - person parchambeau; 16.05.2013