当我使用Java 11而不是Java 8时,我会收到一些警告消息,因为某些新依赖项(jaxb,jaxws)。 消息是:
WARN o.a.t.u.s.StandardJarScanner.log - Failed to scan [...] from classloader hierarchy
对于很多JAR(例如jaxb-api.jar,txw2-2.4.0-b180830.0438.jar,istack-commons-runtime-3.0.7.jar ...)
因此,我可以将其添加到我的@Configuration文件中
@Bean
public TomcatServletWebServerFactory tomcatFactory() {
return new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
((StandardJarScanner) context.getJarScanner()).setScanManifest(false);
}
};
}
跳过所有JAR的JAR扫描。
所以我的问题是,此JAR扫描是什么,我需要它吗? 另外,我知道我可以将tomcat.util.scan.StandardJarScanFilter.jarsToSkip的jar添加到catalina.properties中,但是我可以在我的Spring Boot应用程序中这样做吗?
答案 0 :(得分:0)
所以我仍然不知道JAR扫描的用途,但是我找到了一种方法来仅排除某些与jaxb相关的软件包。 将此添加到@Configuration文件
@Bean
public TomcatServletWebServerFactory tomcatFactory() {
return new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
Set<String> pattern = new LinkedHashSet<>();
pattern.add("jaxb*.jar");
pattern.add("jaxws*.jar");
StandardJarScanFilter filter = new StandardJarScanFilter();
filter.setTldSkip(StringUtils.collectionToCommaDelimitedString(pattern));
((StandardJarScanner) context.getJarScanner()).setJarScanFilter(filter);
}
};
}
答案 1 :(得分:0)
请参阅Sundararaj Govindasamy和rustyx的答案: AFTER upgrade from Spring boot 1.2 to 1.5.2, FileNotFoundException during Tomcat 8.5 Startup
例如在application.properties
中:
server.tomcat.additional-tld-skip-patterns= # Comma-separated list of additional patterns that match jars to ignore for TLD scanning.
(https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html)
您应该只列出有问题的罐子,例如使用*.jar
将破坏对JSP / JSTL的支持。