Maven 斯普林博格+;jsp404通过命令行运行JAR

Maven 斯普林博格+;jsp404通过命令行运行JAR,maven,spring-mvc,spring-boot,Maven,Spring Mvc,Spring Boot,我试图将我的Spring Boot应用程序作为一个可运行的jar来执行,它在从STS内部运行时运行良好,但在通过java-jar执行时,我尝试访问我的JSP时得到404 @SpringBootApplication public class MyApplication extends WebMvcConfigurerAdapter { public static void main(String[] args) { SpringApplication.run(MyApp

我试图将我的Spring Boot应用程序作为一个可运行的jar来执行,它在从STS内部运行时运行良好,但在通过java-jar执行时,我尝试访问我的JSP时得到404

@SpringBootApplication
public class MyApplication extends WebMvcConfigurerAdapter {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        slr.setDefaultLocale(Locale.US);
        return slr;
    }

    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
        lci.setParamName("lang");
        return lci;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
    }

    @Bean
    //Did trying commenting this part but made no difference
    public ViewResolver jspViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/jsp/");
        resolver.setSuffix(".jsp");
        resolver.setViewClass(JstlView.class);
        return resolver;
    }

}
应用程序属性

spring.mvc.view.prefix= /WEB-INF/jsp/
spring.mvc.view.suffix= .jsp
pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>

    <groupId>com.myapp</groupId>
    <artifactId>myapp</artifactId>
    <version>0.1.17-Alpha</version>

    <name>myapp</name>
    <description>My App</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

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

        <dependency>
            <groupId>org.hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
        </dependency>

        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
        </dependency>

        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </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>

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </dependency>

        <dependency>
            <groupId>com.squareup.retrofit2</groupId>
            <artifactId>retrofit</artifactId>
            <version>2.3.0</version>
        </dependency>

        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
        </dependency>

        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>

    </dependencies>

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

        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

4.0.0
com.myapp
myapp
0.1.17-α
myapp
我的应用程序
org.springframework.boot
spring启动程序父级
1.5.6.1发布
UTF-8
UTF-8
1.8
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
spring引导启动器数据jpa
org.hsqldb
hsqldb
org.postgresql
postgresql
com.zaxxer
希卡里普
编译
org.springframework.boot
弹簧起动试验
测试
org.springframework.boot
弹簧启动机tomcat
org.apache.tomcat.embed
汤姆卡特·贾斯珀
javax.servlet
jstl
com.google.code.gson
格森
com.squareup.2
改造
2.3.0
org.json
json
commons httpclient
commons httpclient
3.1
org.apache.httpcomponents
httpclient
src/main/resources
org.springframework.boot
springbootmaven插件
我在这里看到过类似的问题,但大多数问题都指向这样一个事实:sufix或前缀不在application.properties或tomcat embed jasper中,甚至jsp也不在路径/src/main/resources/META-INF/resources/WEB-INF/jsp中(我的jsp确实在这个路径中)。
关于我在这里可能缺少什么,有什么想法吗?

我遇到了这个问题,对于我在gradle的时候,我不得不将嵌入式tomcat依赖项从编译更改为实现

implementation('org.apache.tomcat.embed:tomcat-embed-jasper:8.0.47')

当包是jar时,嵌入式tomcat似乎不能很好地工作,正如本文所述,它试图使用Jetty而不是tomcat,但是到目前为止,没有运气尝试在
pom.xml中的
标记中提供类似
com.something.BootApplication
的东西。使用标签start-class时,xml
不起作用。试试这个,它说明您必须在
spring boot maven插件中添加
true