2017-04-20 62 views
0

我正在使用IntelliJ IDEA進行Spring Boot項目,並且一切正常。我沒有任何問題在IntelliJ IDEA中運行和測試應用程序。無論我將其配置爲「應用程序」還是「彈簧啓動」(從運行/編輯配置菜單),它都可以運行。由IntelliJ IDEA生成的Spring Boot項目的工件導致錯誤

但是,在創建工件並嘗試使用「java -jar AppName 。罐」。它噴出了這樣的錯誤:

找不到任何財產來源鍵 'spring.profiles.active'

產生的原因:java.lang.IllegalArgumentException異常:無在META-INF/spring.factories中找到自動配置類。如果您使用自定義打包,請確保該文件是正確的。

我提取了jar文件和spring.factories等文件確實在文件夾「META-INF」中。

我懷疑問題的原因是類路徑。當我從IntelliJ IDEA中運行它時,我注意到它在「使用模塊的類路徑」中設置爲模塊。但是,在神器中,我無法正確設置設置。

您認爲問題的原因是什麼?我認爲這是班級之路。如果不是,還能有什麼?請幫忙!

我在這裏提供我的pom.xml文件:

<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> 

<parent> 
    <groupId>org.kurento.tutorial</groupId> 
    <artifactId>kurento-tutorial</artifactId> 
    <version>6.6.1-SNAPSHOT</version> 
</parent> 

<artifactId>WebRTCLiveApp</artifactId> 
<packaging>jar</packaging> 

<name>WebRTCLiveApp</name> 
<description>Company Live App</description> 

<licenses> 
    <license> 
     <name>Apache 2.0</name> 
     <url>http://www.apache.org/licenses/LICENSE-2.0</url> 
     <distribution>repo</distribution> 
    </license> 
</licenses> 

<organization> 
    <name>Kurento</name> 
    <url>http://www.kurento.org</url> 
</organization> 

<developers> 
    <developer> 
     <id>kurento.org</id> 
     <name>-kurento.org Community</name> 
     <organization>Kurento.org</organization> 
     <organizationUrl>http://www.kurento.org</organizationUrl> 
    </developer> 
</developers> 

<properties> 

    <!-- Main class --> 
    <start-class>com.company.live.webrtc.WebRTCLiveApp</start-class> 

</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-websocket</artifactId> 
    </dependency> 

    <!-- Kurento --> 
    <dependency> 
     <groupId>org.kurento</groupId> 
     <artifactId>kurento-client</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.kurento</groupId> 
     <artifactId>kurento-utils-js</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.webjars</groupId> 
     <artifactId>webjars-locator</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.webjars.bower</groupId> 
     <artifactId>bootstrap</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.webjars</groupId> 
     <artifactId>draggabilly</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.webjars.bower</groupId> 
     <artifactId>demo-console</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.webjars.bower</groupId> 
     <artifactId>adapter.js</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.webjars.bower</groupId> 
     <artifactId>jquery</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.webjars.bower</groupId> 
     <artifactId>ekko-lightbox</artifactId> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <configuration> 
       <mainClass>${start-class}</mainClass> 
       <layout>ZIP</layout> 
       <classifier>exec</classifier> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>repackage</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <configuration> 
       <mainClass>${start-class}</mainClass> 
      </configuration> 
     </plugin> 
    </plugins> 

    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>false</filtering> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>banner.txt</include> 
      </includes> 
     </resource> 
    </resources> 
</build> 

<profiles> 
    <profile> 
     <id>default</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-assembly-plugin</artifactId> 
        <configuration> 
         <descriptor>src/assembly/bin.xml</descriptor> 
         <finalName>${project.artifactId}-${project.version}</finalName> 
         <appendAssemblyId>false</appendAssemblyId> 
        </configuration> 
        <executions> 
         <execution> 
          <phase>package</phase> 
          <goals> 
           <goal>single</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-antrun-plugin</artifactId> 
        <executions> 
         <execution> 
          <phase>package</phase> 
          <configuration> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
    <profile> 
     <id>no-assembly</id> 
    </profile> 
</profiles> 

我已經搜索並嘗試其他例子/解決方案,並沒有奏效。

請幫忙!謝謝!

+0

第一個錯誤看起來像沒有找到「.properties」文件的問題。你的'.properties'文件位於哪裏?它們是否包含在JAR清單中的類路徑中? – wheeler

+0

您需要使用spring boot maven插件來構建可執行jar。 Spring引導可執行文件jar與常規可執行jar有不同的結構。 – jny

+0

不要在initellij中創建artifiact ...使用manve與spring引導插件(專爲此設計)。我建議刪除exec插件,程序集插件和antrun插件。這是Spring Boot Plugin的一項任務。 –

回答

0

問題已解決。

在器物的IntelliJ從模塊對話框創建JAR,我不得不

  1. 選擇「通過清單複製到輸出目錄和鏈接」選項
  2. 確保META-INF/MANIFEST.INF文件設置爲「src/main/resources」

現在一切正常(花費整個下午之後)。

+1

您正在使用Spring Boot,因此也應該使用Spring Boot Maven插件來創建可執行文件。你正在圍繞框架而不是框架。 –

+0

Maven是構建工具,並確保您使用它。 IntelliJ不是一個好的選擇,因爲你不允許它與Jenkins等CI工具集成。我建議添加spring boot maven插件並繼續用maven構建,儘管你已經解決了它。 –

相關問題