2013-04-01 3 views
4

Я уже несколько дней пытаюсь создать исполняемый файл jar для моего muli-модуля maven project. Тем не менее, когда я пытаюсь запустить этот файл jar, я получаю «Не могу найти или загрузить основной класс src.main.java.com.domain.Mainclass» (я изменил домен имени и MainClass для обеспечения конфиденциальности моей компании)Maven Jar Builder: не удалось найти или загрузить основной класс

Я искал дни и ни один из очевидных советов, похоже, не работает.

Мой проект имеет основной проект maven, который загружает все зависимости (упаковка: POM) и несколько проектов модулей (упаковка: Jar).

Все работает нормально, и все файлы скомпилированы в файлы классов, но каким-то образом основной класс не добавляется в pom.

Мой плагин Pom Файл:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2-beta-4</version> 
    <configuration> 
     <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     <archive> 
     <manifest> 
      <mainClass>com.domain.project.MainClass</mainClass> 
     </manifest> 
     </archive> 
     </configuration> 
     <executions> 
     <execution> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     </execution> 
     </executions> 
     </plugin> 

команд, я использую: МВН чистый пакет, то я компакт-диск в целевую папку и сделать: Java -jar jarfilename.jar

Любые советы или помощь будет приветствуются!

Edit:

Моя текущая конфигурация создает 2 файла фляги для каждого модуля:

  • имя_проекта-банку-с-dependencies.jar
  • projectname.jar

Когда Я перехожу к целевой папке модуля с моим основным классом, я могу успешно запустить файл jar. Однако, когда я пытаюсь запустить файл jar моего родительского проекта maven (с пакетом: pom), я все равно получаю ту же ошибку. Кто-нибудь знает, почему основной файл jar не может найти основной класс?

Спасибо!

ответ

10

Вы не должны иметь src.main.java как часть названия пакета вашего основного класса. Это всего лишь часть соглашения о структуре папок проекта maven по умолчанию. Вероятно, ваша конфигурация должна быть следующей:

<archive> 
    <manifest> 
     <mainClass>com.domain.project.MainClass</mainClass> 
    </manifest> 
    </archive> 
+0

Спасибо @NilsH. Я изменил конфигурацию, которую вы предложили, и у меня все еще есть та же проблема. У меня это в основном файле pom (упаковка: Pom). Полезно ли знать, что каждый из моих модулей и основного проекта имеет целевую папку, содержащую 2 файла jar после каждой сборки? 1: projectname-jar-with-dependencies.jar 2: projectname.jar – Jonstewart

+0

Также я обнаружил, что файл jar в целевой папке моего основного класса будет запущен. Какие-нибудь идеи о том, почему мой основной проект не имеет подходящего класса? – Jonstewart

+0

Это сработало правильно. Maven строит банку для каждого пакета, вы должны убедиться, что используете правильную банку. Спасибо за всю твою помощь! – Jonstewart