Невозможно выполнить сгенерированный maven jar-файл, используя java -jar - PullRequest
1 голос
/ 22 ноября 2011

Привет, я использую maven2 для создания своего проекта.Я могу сгенерировать файл jar с помощью maven build с помощью команды mvn clean install.

. Я добавил этот плагин в свой файл pom.xml для манифеста, чтобы сделать запись пути к классу и основной класс для выполнения:

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
       <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
               <mainClass>com.test.TestExample</mainClass>

            </manifest>
          </archive>
        </configuration>     
      </plugin>

Когда я собираю проект и извлекаю файл jar, его сгенерированный файл manifest.mf и добавляем запись основного класса в виде: Main-Class: com.test.TestExample и добавляем файлы jar в Class-Path: mail-1.4.jar.Но когда я пытаюсь выполнить jar-файл с помощью команды java -jar TestJar.jar, я получаю исключение:

Caused by: java.lang.ClassNotFoundException: javax.mail.MessagingException
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 1 more

Любой указатель для решения этой проблемы очень полезен ..

Заранее спасибо ..

1 Ответ

0 голосов
/ 22 ноября 2011

То, что вы хотите, это указать расположение зависимостей для исполняемого файла jar. Вы можете попробовать обновить конфигурацию вашего плагина следующим образом:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
   <configuration>
      <archive>
        <manifest>
          <addClasspath>true</addClasspath>
           <classpathPrefix>lib/</classpathPrefix>
           <mainClass>com.test.TestExample</mainClass>
        </manifest>
      </archive>
    </configuration>     
  </plugin>

Затем убедитесь, что папка lib, содержащая ваши зависимости, находится на том же уровне, что и исполняемый файл jar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...