当前位置: 首页 > 知识库问答 >
问题:

Spring boot生成的jar文件只在项目根目录中工作

窦涵忍
2023-03-14

我是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中的某些内容?

共有1个答案

顾琛
2023-03-14

我可以通过将包装从罐子改为战争来修复它,有趣的是,这是有效的:

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

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

 类似资料:
  • 我的Intellij项目在IDE中完美地运行,但任何试图提取有效数据的方法。来自它的jar文件导致了某种错误。我的项目使用Maven、Spring和Apache Ignite。这是我的pom。xml文件: 清单: 并且,文件夹结构: 我列出了以下尝试: 1-在pom中运行mvn clean install。xml目录:编译得很好,但我得到的错误是相对于jar文件没有主清单属性。 2-我打开jar文

  • 我在SBT中有一个多项目构建配置,由两个互不依赖的不同模块组成。它们只是(碰巧)属于同一产品。 项目布局如下: project/Build.scala包含常见设置,如下所示: 根构建文件 build.sbt 只需要将它们放在一起 [我也试图删除它... 最后是myProject_1/build.sbt[我刚刚省略了myProject_2/build.sbt,因为它非常相似,没有为主题提供任何附加价

  • 我必须通过 JAR 项目提供静态.js文件。为此,我创建了一个 JAR(使用 MAVEN),如下所示: 现在,我将此 JAR 添加到我的父级Spring启动项目中,并在其中一个 中添加了 这给了我一个404错误。 我的结论是:要么启动项目没有将JAR中的文件夹合并到它自己的中,要么我没有正确地访问该文件。 这些问题没有帮助(无法更改<code>WebMvcConfigurerAdapter</co

  • 问题内容: 虽然只有两天了,但是我肯定会在所有Java项目中都使用gradle,并从所有项目的根目录中删除pom.xml,这对我肯定是有利的。 但是,我希望保持与Maven兼容,就某种意义而言,我希望gradle任务能够在用户希望的项目根目录下生成合适的pom.xml。 目前,我对pom.xml的唯一引用是在build.gradle文件的这一部分中(只需进行很少的修改,就可以在这里找到): 我如何

  • 我做了一个简单的项目,其中包含一些测试,我希望能够在其他计算机上启动测试。我使用runas构建了这个项目- 错误:在com类中找不到Main方法。实例TestPurchase,请将main方法定义为:publicstaticvoidmain(String[]args)或JavaFX应用程序类必须扩展JavaFX。应用应用 据我所知,TestNG不需要任何主方法,因为有注释。这就引出了一些问题: 我

  • 问题内容: 民间, 我正在使用Eclipse开发Java应用程序。Maven用于创建最终的jar文件。 在应用程序中,我使用一些图像图标作为按钮。按照Internet上的一些说明,我通过单击项目创建了“源”目录。我将源目录命名为“ res”,并将图像移动到该目录。 当应用未打包为jar文件时,此方法就可以正常工作(非常适合调试)。但是,当maven打包它时,我看到图像放在jar文件的根目录中。以下