2016-04-24 4 views
-2

Я создаю приложение Java с помощью Eclipse/Maven, но продолжаю получать сообщение об ошибке «без основного манифеста, в xxx.jar», когда я пытаюсь запустить скомпилированный баночка. Я прошел (или, по крайней мере, думаю, что я так не обижусь, если вас попросят попробовать что-то в этой ветке снова) все в этом Can't execute jar- file: "no main manifest attribute" нить. Главное, что совпадает с тем, что мой MANIFEST.MF не содержит никакой информации о классе, что заставляет меня думать, что есть проблема с моим pom.xml или некоторыми настройками в Eclipse (Mars2). Мой pom.xml нижеMain-Class не входит в Manifest.MF, Eclipse

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>io.github.EmbeddedPi</groupId> 
<artifactId>udpServerLED</artifactId> 
<version>0.0.1</version> 
<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.3</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
       <archive> 
        <manifest> 
         <addClasspath>true</addClasspath> 
         <mainClass>udpServerLED.Main</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

и главная суть основного исходного файла

package udpServerLED; 
    public class Main { 
     public Main() {} 
    } 

Полный код можно увидеть на https://github.com/EmbeddedPi/udpServerLED

Мое шестое чувство, что я совершил некоторый синтаксис новичка faux pas в настройке рамки проекта, но я просто не вижу его. Мои любительские попытки писать программное обеспечение до сих пор помогали посты здесь, поэтому я решил зарегистрироваться, чтобы прямо спросить об этом.

+0

Вы настроили maven-jar-plugin, как указано в вопросе, который вы связали? –

+0

Да и нет. Я включил параметры плагина jar, хотя в существующем плагине компилятора (этот код является адаптацией плагина Bukkit, который ранее не должен был выполняться независимо). Фиксируя это, я сделал еще один шаг вперед, так как теперь у меня есть класс в моем манифесте, хотя он еще не выполняется. Я прочь, чтобы почитать и поиграть еще и отчитаться. – DaveW

+0

вам нужно настроить maven-jar-plugin для манифеста конфигурации упакованного банку, однако для его запуска, скорее всего, потребуются и зависимости, поэтому вам понадобится жирная банка (или банка с зависимостями), тогда вы должны использовать maven-shade-plugin и настроить записи манифеста в нем –

ответ

1

pom.xml нуждается в отдельных разделах компилятора и jar-плагина, как показано ниже.

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.3</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.4</version> 
     <configuration> 
      <archive> 
       <manifest> 
        <addClasspath>true</addClasspath> 
        <mainClass>udpServerLED.Main</mainClass> 
       </manifest> 
      </archive> 
     </configuration> 
    </plugin> 
</plugins> 

Спасибо за комментарий А. Ди Маттео выше, который указал мне в правильном направлении, чтобы исправить это.

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