2017-02-01 4 views
0

Я переношу свою старую настройку Spring в Spring Boot 1.5.1.RELEASE.Приложение Spring Boot не является исполняемым

Я не получаю исполняемый файл .jar, я следил за бесчисленными примерами, но моя банка не может стать исполняемым.

Это установка мульти-модуль, так вот мой родительский pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.xyz</groupId> 
    <artifactId>xyz</artifactId> 
    <name>xyz</name> 
    <version>1.0.0</version> 
    <packaging>pom</packaging> 

    <parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.1.RELEASE</version> 
    </parent> 

    <properties> 
    <java.version>1.8</java.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <commons.version>3.5</commons.version> 
    <guava.version>21.0</guava.version> 
    </properties> 

    <modules> 
    <module>mainApp</module> 
    <module>module1</module> 
    <module>module2</module> 
    .......... 
    </modules> 

    <dependencyManagement> 
    <dependencies> 

    <!-- Spring boot --> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter</artifactId> 
    </dependency> 

    <!-- commons --> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>3.5</version> 
    </dependency> 

    <!-- google guava --> 
    <dependency> 
     <groupId>com.google.guava</groupId> 
     <artifactId>guava</artifactId> 
     <version>${guava.version}</version> 
    </dependency> 

    <!-- Test --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
    </dependencyManagement> 

</project> 

Это ПОМ из mainApp, это модуль, который имеет Application.java который содержит основной метод.

<?xml version="1.0" encoding="UTF-8"?> 
<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
    <artifactId>xyz</artifactId> 
    <groupId>com.xyz</groupId> 
    <version>1.0.0</version> 
    </parent> 
    <artifactId>mainApp</artifactId> 
    <groupId>com.xyz.mainApp</groupId> 
    <packaging>jar</packaging> 
    <name>mainApp</name> 

    <dependencies> 
<!-- Spring Boot --> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 

<!-- Spring Security OAuth2--> 
    <dependency> 
     <groupId>org.springframework.security.oauth</groupId> 
     <artifactId>spring-security-oauth2</artifactId> 
    </dependency> 


<!-- xyz dependencies -->  
    <dependency> 
     <groupId>com.xyz.module3</groupId> 
     <artifactId>module3</artifactId> 
     <version>${project.version}</version> 
    </dependency>  
    <dependency> 
     <groupId>com.xyz.module2</groupId> 
     <artifactId>module2</artifactId> 
     <version>${project.version}</version> 
    </dependency> 
    </dependencies> 

    <build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <configuration> 
       <executable>true</executable> 
      </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
    <finalName>xyz</finalName> 
    </build> 

</project> 

Вещи, которые работают:

Так все работает нормально, когда я делаю MVN чистую установку в папке родительского pom.xml, а затем запустить MVN пружинный загрузки: запустить в папка mainApp

вещи, которые не:

когда е xecute Java -jar mainApp/цель/xyz.jar Я получаю сообщение об ошибке, как:

no main manifest attribute, in mainApp/target/xyz.jar 

, если я пытаюсь запустить банку как ./mainApp/target/xyz.jar, ну я могу» т как файл не является исполняемым, мой Macos Sierra терминал показывает, что это за права доступа к файлам:

-rw-r--r-- 1 userXYZ staff 37641156 Feb 1 13:14 xyz.jar 

Если я вручную изменить права доступа к -rwxr - r-- и попытаться запустить файл я получаю эта тарабарщина:

/xyz.jar: line 1: PK: command not found 
./xyz.jar: line 2: syntax error near unexpected token `)' 
./xyz.jar: line 2: ?iAJ META-INF?iAJMETA-INF/MANIFEST.MFu??J?0??y?y??,??nW*???Jb3?F?LI?????qa?n?3???)Mp5&V????ñ^IQ?????ޱ?.#??`?$?{<??7?m6?j܀?W????'????γڎ9?>????RT?͡?V?? 

G?? 

3iR?G4???dә?A(̀?z?ϖV]ٷ??T??O>?^??0wy?u?^??S]?iG?2?"???i?$?' 

ответ

2

Проблема заключается не в том, настроен плагин, но когда плагин настроен.

Я завернуты мои плагины с <pluginManagement>, который был причиной всех проблем, когда я удалил это все разрешилось и работал отлично

0

обновление вашей сборки блока в pom.xml со следующими, убедитесь, что вы используете, используя Maven 3.2 (или выше):

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <version>1.5.1.RELEASE</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>repackage</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
+0

, к сожалению, никакого эффекта ... – zalis

0

главный вход класс отсутствует в банке манифеста.

Пожалуйста, измените загрузочный Maven плагин, как показано ниже:

<plugin> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-maven-plugin</artifactId> 

     <configuration> 
     <mainClass>${start-class}</mainClass> 
     <layout>ZIP</layout> 
     </configuration> 
     <executions> 
     <execution> 
      <goals> 
      <goal>repackage</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 

Плагин info

+0

все изменилось немного, я получил исключение: Исключение в потоке «main» java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication \t at com.xyz.mainApp.Application.main (Application.java:12) Вызвано: java.lang.ClassNotFoundException: org. springframework.boot.SpringApplication \t at java.net.URLClassLoader.findClass (URLClassLoader.Java: 381) \t в java.lang.ClassLoader.loadClass (ClassLoader.java:424) \t в sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:331) \t в java.lang.ClassLoader.loadClass (ClassLoader.java:357) \t ... еще 1 – zalis

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