簡體   English   中英

Spring-boot jersey maven未能運行war文件

[英]Spring-boot jersey maven failed to run war file

我們正在創建一個彈簧靴衫應用程序。 現在我們要創建可執行的war文件。 問題是當我運行它時,應用程序運行正常

  mvn spring-boot:run 

但是當我嘗試將其打包為war並使用java -jar ABD.war運行它時會出現以下錯誤

 Caused by: java.io.FileNotFoundException:       /Users/ABC/ABD-0.0.1-SNAPSHOT.war!/WEB-INF/classes (No such file or directory)


 Caused by: org.glassfish.jersey.server.internal.scanning.ResourceFinderException:

這是我正在使用的pom.xml的一部分,

<packaging>war</packaging>
.
.
.

 <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>


        <org.slf4j.version>1.7.7</org.slf4j.version>

        <maven-compiler-plugin.version>3.1</maven-compiler-plugin.version>

        <java.version>1.8</java.version>


  </properties>

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

雖然當我解壓war文件時,我可以看到WEB-INF / classes文件夾。

好的找到了解決方案。 我有一個jersery配置類,我在其中添加了所有帶有packages()的控制器類。 當我評論它並將其更改為注冊(“controller.class”)它開始工作!

    @Configuration
    @ApplicationPath("/path")
    @Controller 
    public class JerseyConfig extends ResourceConfig {
        public JerseyConfig() {
            register(MultiPartFeature.class);
           register(OneController.class);
          //packages("com.controllers");
        }
    }

更新

 private static final Logger logger = LoggerFactory.getLogger(OneController.class); public JerseyConfig() { scan("com.somepackages"); } public void scan(String... packages) { for (String pack : packages) { Reflections reflections = new Reflections(pack); reflections.getTypesAnnotatedWith(Path.class) .parallelStream() .forEach((clazz) -> { logger.info("New resource registered: " + clazz.getName()); register(clazz); }); } 

}

使用此解決方案,您可以通過包掃描獲得球衣寄存器中的所有控制器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM