IntelliJ IDEA生成的Spring Boot项目工件会导致错误

问题描述 投票:0回答:2

我正在使用IntelliJ IDEA开发Spring Boot项目,一切正常。我在IntelliJ IDEA中运行和测试应用程序没有问题。无论我将其配置为“应用程序”还是“弹簧启动”(来自“运行/编辑配置”菜单),它都能完美运行

但是,在我创建工件并尝试使用“java -jar AppName.jar”运行它之后会出现问题。它会发出如下错误:

无法在任何属性源中找到键'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>

我搜索并尝试了其他示例/解决方案,但都没有效果。

请帮忙!谢谢!

java spring spring-boot
2个回答
2
投票

问题解决了。

在IntelliJ Artifacts Create JAR from Modules对话框中,我必须这样做

  1. 选择“复制到输出目录并通过清单链接”选项
  2. 确保META-INF / MANIFEST.INF文件设置为“src / main / resources”

现在一切正常(在整个下午度过之后)。


0
投票

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

<packaging>war</packaging>
© www.soinside.com 2019 - 2024. All rights reserved.