SpringBoot打成jar包页面访问不了,字体显示不出来

首先描述下遇到的问题,第一个是:页面放在了单独的一个模块里面(其实就是一个jar包),用idea跑项目,所有的静态页面均可以正常访问。但是打成jar包跑起来后却访问不了静态页面(准确的说是static下面的css,js等文件),其中swagger页面也访问不了。更诡异的问题是,有的时候打的包可以访问,有的时候打的包不可以访问,笔者比对两个jar包,发现其实是一摸一样,百度了好久都是差不多的方式。
最后反思总结,本项目中的WebMvcConfigurationSupport配置放在另外一个公共jar包里面,后面我的想法是如果把它提前,放到swagger配置里面(和swagger配置一起加载),配置如下:

@Configuration
@EnableSwagger2
public class Swagger2 extends WebMvcConfigurationSupport {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX + "/static/");
        registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
        super.addResourceHandlers(registry);
    }


    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enableUrlTemplating(false)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.test.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("测试中心")
                .description("测试一下下")
                .termsOfServiceUrl("http://www.baidu.com")
                .version("1.1.1")
                .build();
    }

按照上述配置调整后,确实解决了上述问题,经验证后面打包没有再出现类似问题,一切访问都正常。

随之而来的第二个问题是:按照第一个问题的解决方式调整后,发现fonts下面的文件ttf和woff显示不出来,报错提示:OTS parsing error: incorrect file size in WOFF header。
原因应该是maven对其中的内容做了某些转换,导致文件错误吧(推测而已,未经验证),解决方式其实也是比较简单,在pom文件添加如下代码即可。

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <excludes>
            <exclude>**/*.ttf</exclude>
            <exclude>**/*.woff</exclude>
        </excludes>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>false</filtering>
        <includes>
            <include>**/*.ttf</include>
            <include>**/*.woff</include>
        </includes>
    </resource>
</resources>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <configuration>
            <nonFilteredFileExtensions>
                <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
                <nonFilteredFileExtension>woff</nonFilteredFileExtension>
                <nonFilteredFileExtension>woff2</nonFilteredFileExtension>
            </nonFilteredFileExtensions>
        </configuration>
    </plugin>
</plugins>
发布了87 篇原创文章 · 获赞 41 · 访问量 18万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览