首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法执行spring boot jar

无法执行spring boot jar
EN

Stack Overflow用户
提问于 2016-08-26 16:02:59
回答 1查看 356关注 0票数 0

我有一个spring boot后端+单独的(基于AngularJS的)客户端应用程序。我的构建过程首先缩小客户端应用程序的代码并将其压缩,然后将其作为库安装在本地maven repo中。服务器在其pom中引用客户端库,因此在构建服务器时,客户端会被打包到jar中。

问题是,当运行jar (使用java -jar)时,有时启动时间长得离谱(即5-10分钟),或者根本不启动(在合理的时间内),有时直接启动(5-10秒)。我想知道原因是什么?会不会是因为客户端压缩包太大了(可能有时会被缓存)?

编辑: jar运行时(通过java -jar server.jar)。战争结束后,日志是这样的

代码语言:javascript
运行
复制
Starting Application ... with PID ...
Mapping servlet: 'dispatcherServlet' to [/]
Mapping filter: ....
Mapping filter: 'requestContextFilter' to [/*]

并被卡在这个过滤器映射上。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-26 16:30:53

您必须检查spring-boot日志文件,以了解应用程序占用的时间。尝试在跟踪上设置日志级别,并观察时间戳。

在spring-boot中,您可以添加ResourceHandlers来提供静态内容。您必须执行类似的覆盖,如链接中所述:

代码语言:javascript
运行
复制
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    if (!registry.hasMappingForPattern("/webjars/**")) {
        registry.addResourceHandler("/webjars/**").addResourceLocations(
                "classpath:/META-INF/resources/webjars/");
    }
    if (!registry.hasMappingForPattern("/**")) {
        registry.addResourceHandler("/**").addResourceLocations(
                RESOURCE_LOCATIONS);
    }
}

通过这种方式,您可以将客户端代码作为单独的包分发,并且在部署过程中,您必须将该包放在正确的位置(并可能将其解包),以便资源处理程序可以拾取它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39161301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档