简体   繁体   中英

Artifact of Spring Boot project generated by IntelliJ IDEA causes errors

I am working on a Spring Boot project using IntelliJ IDEA and everything works fine. I have no problem running and testing the application inside IntelliJ IDEA. It runs perfectly whether I configure it as an "Application" or "Spring Boot" (from the Run/Edit Configuration menu)

However, problems occur after I created an artifact and try to run it using "java -jar AppName.jar". It spews out errors like:

Could not find key 'spring.profiles.active' in any property source

and

Caused by: java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.

I extracted the jar file and the spring.factories, etc. files are indeed inside the folder "META-INF".

I suspect the cause of the problem is the class path. When I run it from within IntelliJ IDEA, I noticed that it is set to module in "Use Classpath of Module". However, in the artifact, I could not get the settings right.

What do you think is the cause of the problem? I think it is the class path. If not, what else can it be? Please help!

I'm providing my pom.xml file here:

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

I have search and tried other examples/solutions and none worked.

Please help! Thanks!

Problem is resolved.

In the IntelliJ Artifacts Create JAR from Modules dialog box, I have to

  1. choose "Copy to output directory and link via manifest" option
  2. make sure the META-INF/MANIFEST.INF file is set to "src/main/resources"

Everything is working now (after spending the entire afternoon).

如果是Maven项目,建议添加pom.xml

<packaging>war</packaging>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM