【问题标题】:Spring boot generated jar file just work inside root of projectSpring boot 生成的 jar 文件只在项目的根目录中工作
【发布时间】:2017-11-21 01:21:59
【问题描述】:

我是 Spring Boot 新手,我认为这个问题非常基础。

我使用 Spring Boot 创建了一个应用程序,并且在开发环境中一切正常。但是当我将 jar 文件从目标目录复制到另一台机器并运行“java -jar”时,它不会呈现 jsp 页面并出现以下错误:

There was an unexpected error (type=Not Found, status=404)

当我将 src 文件夹从项目根目录复制到同一位置时,它工作正常。

似乎 jar 文件只能从项目的根目录运行。

这是我的配置:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

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

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

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

    </dependencies>
    <build>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                </resource>
                <resource>
                    <directory>src/main/webapp</directory>
                </resource>
            </resources>

            <plugins>

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

和我的项目结构:

我在命令行运行以下命令:

mvn clean package

我的目标目录中有以下内容:

我可以使用

运行应用程序
java -jar target/springboot-in-10-steps-0.0.1.jar 

应用程序按预期工作并呈现欢迎页面。

当我转到目标目录并运行相同的命令时:

java -jar springboot-in-10-steps-0.0.1.jar 

应用程序启动,但它不呈现欢迎页面。

当我将 src 复制到目标时,一切都很好,我可以看到欢迎页面。 Spring boot好像在jar文件中没有找到WEB-INF/jsp目录。

我是否遗漏了 Spring Boot 配置或 application.properties 中的某些内容?

【问题讨论】:

    标签: maven jsp spring-boot


    【解决方案1】:

    我可以通过将包装从 jar 更改为 war 来修复它,有趣的是,这很有效:

    java -jar springboot-in-10-steps-0.0.1.war 
    

    我认为有一些方法可以使用 repackage 功能更改生成的 jar 文件中的文件和文件夹的结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-08
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      相关资源
      最近更新 更多