spring - 将 Spring Boot 从 1.3.7 升级到 1.4.0,导致 AuthenticatorBase.getJaspicProvider 出现 NullPointerException

标签 spring spring-boot tomcat8

这个有点是spring-boot-starter-jersey自带的tomcat-embed-core 8.5.4版本导致的。它会在所有集成测试中生成如下所示的错误。只有当我覆盖 pom 以使用 tomcat-embed-core 版本 8.0.36 时,它才会起作用。奇怪的是,这是我收到的唯一错误消息。

java.lang.NullPointerException: null
    at org.apache.catalina.authenticator.AuthenticatorBase.getJaspicProvider(AuthenticatorBase.java:1140)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:431)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

这是我的依赖树:

[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ sample-services ---
[INFO] com.sample:sample-services:jar:1.0.0-SNAPSHOT
[INFO] +- com.sample:sample-customer:jar:1.0.0-SNAPSHOT:compile
[INFO] |  +- com.sample:sample-core:jar:1.0.0-SNAPSHOT:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-data-jpa:jar:1.4.0.RELEASE:compile
[INFO] |  |  |  +- org.springframework.boot:spring-boot-starter-aop:jar:1.4.0.RELEASE:compile
[INFO] |  |  |  |  \- org.aspectj:aspectjweaver:jar:1.8.9:compile
[INFO] |  |  |  +- org.springframework.boot:spring-boot-starter-jdbc:jar:1.4.0.RELEASE:compile
[INFO] |  |  |  |  +- org.apache.tomcat:tomcat-jdbc:jar:8.5.4:compile
[INFO] |  |  |  |  |  \- org.apache.tomcat:tomcat-juli:jar:8.5.4:compile
[INFO] |  |  |  |  \- org.springframework:spring-jdbc:jar:4.3.2.RELEASE:compile
[INFO] |  |  |  +- org.hibernate:hibernate-core:jar:5.0.9.Final:compile
[INFO] |  |  |  |  +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] |  |  |  |  +- antlr:antlr:jar:2.7.7:compile
[INFO] |  |  |  |  +- org.jboss:jandex:jar:2.0.0.Final:compile
[INFO] |  |  |  |  +- dom4j:dom4j:jar:1.6.1:compile
[INFO] |  |  |  |  |  \- xml-apis:xml-apis:jar:1.4.01:compile
[INFO] |  |  |  |  \- org.hibernate.common:hibernate-commons-annotations:jar:5.0.1.Final:compile
[INFO] |  |  |  +- org.hibernate:hibernate-entitymanager:jar:5.0.9.Final:compile
[INFO] |  |  |  +- javax.transaction:javax.transaction-api:jar:1.2:compile
[INFO] |  |  |  +- org.springframework.data:spring-data-jpa:jar:1.10.2.RELEASE:compile
[INFO] |  |  |  |  \- org.springframework:spring-orm:jar:4.3.2.RELEASE:compile
[INFO] |  |  |  \- org.springframework:spring-aspects:jar:4.3.2.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-logging:jar:1.4.0.RELEASE:compile
[INFO] |  |  |  +- ch.qos.logback:logback-classic:jar:1.1.7:compile
[INFO] |  |  |  |  \- ch.qos.logback:logback-core:jar:1.1.7:compile
[INFO] |  |  |  +- org.slf4j:jcl-over-slf4j:jar:1.7.21:compile
[INFO] |  |  |  +- org.slf4j:jul-to-slf4j:jar:1.7.21:compile
[INFO] |  |  |  \- org.slf4j:log4j-over-slf4j:jar:1.7.21:compile
[INFO] |  |  +- commons-collections:commons-collections:jar:3.2.2:compile
[INFO] |  |  +- com.h2database:h2:jar:1.4.192:compile
[INFO] |  |  +- org.postgresql:postgresql:jar:9.4.1209.jre7:compile
[INFO] |  |  +- javax:javaee-api:jar:7.0:compile
[INFO] |  |  |  \- com.sun.mail:javax.mail:jar:1.5.5:compile
[INFO] |  |  |     \- javax.activation:activation:jar:1.1:compile
[INFO] |  |  +- org.apache.commons:commons-lang3:jar:3.4:compile
[INFO] |  |  +- commons-codec:commons-codec:jar:1.10:compile
[INFO] |  |  +- org.apache.httpcomponents:httpcore:jar:4.4.5:compile
[INFO] |  |  +- org.joda:joda-money:jar:0.10.0:compile
[INFO] |  |  \- com.sun.jna:jna:jar:3.0.9:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-data-elasticsearch:jar:1.4.0.RELEASE:compile
[INFO] |  |  \- org.springframework.data:spring-data-elasticsearch:jar:2.0.2.RELEASE:compile
[INFO] |  |     +- org.springframework:spring-tx:jar:4.3.2.RELEASE:compile
[INFO] |  |     +- org.springframework.data:spring-data-commons:jar:1.12.2.RELEASE:compile
[INFO] |  |     +- commons-lang:commons-lang:jar:2.6:compile
[INFO] |  |     \- org.elasticsearch:elasticsearch:jar:2.3.4:compile
[INFO] |  |        +- org.apache.lucene:lucene-core:jar:5.5.0:compile
[INFO] |  |        +- org.apache.lucene:lucene-backward-codecs:jar:5.5.0:compile
[INFO] |  |        +- org.apache.lucene:lucene-analyzers-common:jar:5.5.0:compile
[INFO] |  |        +- org.apache.lucene:lucene-queries:jar:5.5.0:compile
[INFO] |  |        +- org.apache.lucene:lucene-memory:jar:5.5.0:compile
[INFO] |  |        +- org.apache.lucene:lucene-highlighter:jar:5.5.0:compile
[INFO] |  |        +- org.apache.lucene:lucene-queryparser:jar:5.5.0:compile
[INFO] |  |        |  \- org.apache.lucene:lucene-sandbox:jar:5.5.0:compile
[INFO] |  |        +- org.apache.lucene:lucene-suggest:jar:5.5.0:compile
[INFO] |  |        |  \- org.apache.lucene:lucene-misc:jar:5.5.0:compile
[INFO] |  |        +- org.apache.lucene:lucene-join:jar:5.5.0:compile
[INFO] |  |        |  \- org.apache.lucene:lucene-grouping:jar:5.5.0:compile
[INFO] |  |        +- org.apache.lucene:lucene-spatial:jar:5.5.0:compile
[INFO] |  |        |  +- org.apache.lucene:lucene-spatial3d:jar:5.5.0:compile
[INFO] |  |        |  \- com.spatial4j:spatial4j:jar:0.5:compile
[INFO] |  |        +- org.elasticsearch:securesm:jar:1.0:compile
[INFO] |  |        +- com.carrotsearch:hppc:jar:0.7.1:compile
[INFO] |  |        +- org.joda:joda-convert:jar:1.2:compile
[INFO] |  |        +- com.fasterxml.jackson.dataformat:jackson-dataformat-smile:jar:2.8.1:compile
[INFO] |  |        +- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.8.1:compile
[INFO] |  |        +- io.netty:netty:jar:3.10.5.Final:compile
[INFO] |  |        +- com.ning:compress-lzf:jar:1.0.2:compile
[INFO] |  |        +- com.tdunning:t-digest:jar:3.0:compile
[INFO] |  |        +- org.hdrhistogram:HdrHistogram:jar:2.1.6:compile
[INFO] |  |        +- commons-cli:commons-cli:jar:1.3.1:compile
[INFO] |  |        \- com.twitter:jsr166e:jar:1.1.0:compile
[INFO] |  +- com.google.guava:guava:jar:19.0:compile
[INFO] |  +- org.apache.httpcomponents:httpclient:jar:4.5.2:compile
[INFO] |  +- commons-httpclient:commons-httpclient:jar:3.1:compile
[INFO] |  +- commons-io:commons-io:jar:2.5:compile
[INFO] |  +- net.sf.uadetector:uadetector-core:jar:0.9.22:compile
[INFO] |  |  +- net.sf.qualitycheck:quality-check:jar:1.3:compile
[INFO] |  |  +- com.google.code.findbugs:jsr305:jar:2.0.3:compile
[INFO] |  |  \- javax.annotation:jsr250-api:jar:1.0:compile
[INFO] |  +- net.sf.uadetector:uadetector-resources:jar:2014.10:compile
[INFO] |  \- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.8.1:compile
[INFO] +- com.sample:sample-messaging:jar:1.0.0-SNAPSHOT:compile
[INFO] |  +- com.amazonaws:aws-java-sdk-sns:jar:1.11.24:compile
[INFO] |  \- com.amazonaws:aws-java-sdk-sqs:jar:1.11.24:compile
[INFO] +- org.springframework.boot:spring-boot-starter-jersey:jar:1.4.0.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:1.4.0.RELEASE:compile
[INFO] |  |  \- org.yaml:snakeyaml:jar:1.17:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.4.0.RELEASE:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.5.4:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.5.4:compile
[INFO] |  |  \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.5.4:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-validation:jar:1.4.0.RELEASE:compile
[INFO] |  +- org.springframework:spring-web:jar:4.3.2.RELEASE:compile
[INFO] |  |  +- org.springframework:spring-aop:jar:4.3.2.RELEASE:compile
[INFO] |  |  +- org.springframework:spring-beans:jar:4.3.2.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-context:jar:4.3.2.RELEASE:compile
[INFO] |  +- org.glassfish.jersey.core:jersey-server:jar:2.23.1:compile
[INFO] |  |  +- org.glassfish.jersey.core:jersey-client:jar:2.23.1:compile
[INFO] |  |  +- org.glassfish.jersey.media:jersey-media-jaxb:jar:2.23.1:compile
[INFO] |  |  +- javax.annotation:javax.annotation-api:jar:1.2:compile
[INFO] |  |  +- org.glassfish.hk2:hk2-api:jar:2.4.0-b34:compile
[INFO] |  |  |  +- org.glassfish.hk2:hk2-utils:jar:2.4.0-b34:compile
[INFO] |  |  |  \- org.glassfish.hk2.external:aopalliance-repackaged:jar:2.4.0-b34:compile
[INFO] |  |  \- org.glassfish.hk2:hk2-locator:jar:2.4.0-b34:compile
[INFO] |  |     \- org.javassist:javassist:jar:3.20.0-GA:compile
[INFO] |  +- org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.23.1:compile
[INFO] |  +- org.glassfish.jersey.containers:jersey-container-servlet:jar:2.23.1:compile
[INFO] |  +- org.glassfish.jersey.ext:jersey-spring3:jar:2.23.1:compile
[INFO] |  |  +- org.glassfish.hk2:hk2:jar:2.4.0-b34:compile
[INFO] |  |  |  +- org.glassfish.hk2:config-types:jar:2.4.0-b34:compile
[INFO] |  |  |  +- org.glassfish.hk2:hk2-core:jar:2.4.0-b34:compile
[INFO] |  |  |  +- org.glassfish.hk2:hk2-config:jar:2.4.0-b34:compile
[INFO] |  |  |  +- org.glassfish.hk2:hk2-runlevel:jar:2.4.0-b34:compile
[INFO] |  |  |  \- org.glassfish.hk2:class-model:jar:2.4.0-b34:compile
[INFO] |  |  |     \- org.glassfish.hk2.external:asm-all-repackaged:jar:2.4.0-b34:compile
[INFO] |  |  \- org.glassfish.hk2:spring-bridge:jar:2.4.0-b34:compile
[INFO] |  \- org.glassfish.jersey.media:jersey-media-json-jackson:jar:2.23.1:compile
[INFO] |     +- org.glassfish.jersey.ext:jersey-entity-filtering:jar:2.23.1:compile
[INFO] |     +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.8.1:compile
[INFO] |     \- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.8.1:compile
[INFO] |        \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.8.1:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.8.1:compile
[INFO] |  \- com.fasterxml.jackson.core:jackson-core:jar:2.8.1:compile
[INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.8.1:compile
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.4.0.RELEASE:compile
[INFO] |  +- org.hibernate:hibernate-validator:jar:5.2.4.Final:compile
[INFO] |  |  +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile
[INFO] |  |  \- com.fasterxml:classmate:jar:1.3.1:compile
[INFO] |  \- org.springframework:spring-webmvc:jar:4.3.2.RELEASE:compile
[INFO] |     \- org.springframework:spring-expression:jar:4.3.2.RELEASE:compile
[INFO] +- com.amazonaws:aws-java-sdk-s3:jar:1.11.24:compile
[INFO] |  +- com.amazonaws:aws-java-sdk-kms:jar:1.11.24:compile
[INFO] |  \- com.amazonaws:aws-java-sdk-core:jar:1.11.24:compile
[INFO] |     +- commons-logging:commons-logging:jar:1.1.3:compile
[INFO] |     +- com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:2.8.1:compile
[INFO] |     \- joda-time:joda-time:jar:2.9.4:compile
[INFO] +- com.wordnik:swagger-jersey2-jaxrs_2.10:jar:1.3.13:compile
[INFO] |  +- com.wordnik:swagger-jaxrs_2.10:jar:1.3.13:compile
[INFO] |  |  +- com.wordnik:swagger-core_2.10:jar:1.3.13:compile
[INFO] |  |  |  +- com.fasterxml.jackson.module:jackson-module-scala_2.10:jar:2.4.1:compile
[INFO] |  |  |  |  \- com.thoughtworks.paranamer:paranamer:jar:2.6:compile
[INFO] |  |  |  +- com.fasterxml.jackson.module:jackson-module-jsonSchema:jar:2.4.1:compile
[INFO] |  |  |  +- com.wordnik:swagger-annotations:jar:1.3.13:compile
[INFO] |  |  |  +- org.json4s:json4s-ext_2.10:jar:3.2.11:compile
[INFO] |  |  |  +- org.json4s:json4s-native_2.10:jar:3.2.11:compile
[INFO] |  |  |  |  \- org.json4s:json4s-core_2.10:jar:3.2.11:compile
[INFO] |  |  |  |     +- org.json4s:json4s-ast_2.10:jar:3.2.11:compile
[INFO] |  |  |  |     \- org.scala-lang:scalap:jar:2.10.0:compile
[INFO] |  |  |  |        \- org.scala-lang:scala-compiler:jar:2.10.0:compile
[INFO] |  |  |  \- org.json4s:json4s-jackson_2.10:jar:3.2.11:compile
[INFO] |  |  \- org.reflections:reflections:jar:0.9.9:compile
[INFO] |  |     \- com.google.code.findbugs:annotations:jar:2.0.1:compile
[INFO] |  \- org.glassfish.jersey.media:jersey-media-multipart:jar:2.1:compile
[INFO] |     \- org.jvnet.mimepull:mimepull:jar:1.8:compile
[INFO] +- org.glassfish.jersey.ext:jersey-bean-validation:jar:2.23.1:compile
[INFO] |  +- org.glassfish.hk2.external:javax.inject:jar:2.4.0-b34:compile
[INFO] |  +- org.glassfish.jersey.core:jersey-common:jar:2.23.1:compile
[INFO] |  |  +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.23.1:compile
[INFO] |  |  \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile
[INFO] |  +- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] |  +- javax.el:javax.el-api:jar:2.2.4:compile
[INFO] |  +- org.glassfish.web:javax.el:jar:2.2.4:compile
[INFO] |  \- javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile
[INFO] +- com.jayway.restassured:rest-assured:jar:2.9.0:test
[INFO] |  +- org.codehaus.groovy:groovy:jar:2.4.7:test
[INFO] |  +- org.codehaus.groovy:groovy-xml:jar:2.4.7:test
[INFO] |  +- org.apache.httpcomponents:httpmime:jar:4.5.2:test
[INFO] |  +- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] |  +- org.hamcrest:hamcrest-library:jar:1.3:test
[INFO] |  +- org.ccil.cowan.tagsoup:tagsoup:jar:1.2.1:test
[INFO] |  +- com.jayway.restassured:json-path:jar:2.9.0:test
[INFO] |  |  +- org.codehaus.groovy:groovy-json:jar:2.4.7:test
[INFO] |  |  \- com.jayway.restassured:rest-assured-common:jar:2.9.0:test
[INFO] |  \- com.jayway.restassured:xml-path:jar:2.9.0:test
[INFO] +- com.jayway.jsonpath:json-path:jar:2.2.0:compile
[INFO] |  +- net.minidev:json-smart:jar:2.2.1:compile
[INFO] |  |  \- net.minidev:accessors-smart:jar:1.1:compile
[INFO] |  |     \- org.ow2.asm:asm:jar:5.0.3:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.21:compile
[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:1.4.0.RELEASE:test
[INFO] |  +- org.springframework.boot:spring-boot-test:jar:1.4.0.RELEASE:test
[INFO] |  +- org.springframework.boot:spring-boot-test-autoconfigure:jar:1.4.0.RELEASE:test
[INFO] |  +- junit:junit:jar:4.12:test
[INFO] |  +- org.mockito:mockito-core:jar:1.10.19:test
[INFO] |  |  \- org.objenesis:objenesis:jar:2.1:test
[INFO] |  +- org.skyscreamer:jsonassert:jar:1.3.0:test
[INFO] |  +- org.springframework:spring-core:jar:4.3.2.RELEASE:compile
[INFO] |  \- org.springframework:spring-test:jar:4.3.2.RELEASE:test
[INFO] +- org.assertj:assertj-core:jar:3.2.0:compile
[INFO] +- org.springframework.boot:spring-boot-configuration-processor:jar:1.4.0.RELEASE:compile
[INFO] |  \- org.json:json:jar:20140107:compile
[INFO] +- org.neo4j:neo4j-cypher-compiler-2.2:jar:2.2.5:compile
[INFO] |  +- org.scala-lang:scala-library:jar:2.10.5:compile
[INFO] |  +- org.scala-lang:scala-reflect:jar:2.10.5:compile
[INFO] |  +- org.parboiled:parboiled-scala_2.10:jar:1.1.7:compile
[INFO] |  |  \- org.parboiled:parboiled-core:jar:1.1.7:compile
[INFO] |  \- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:jar:1.4:compile
[INFO] \- org.springframework.boot:spring-boot-devtools:jar:1.4.0.RELEASE:compile
[INFO]    +- org.springframework.boot:spring-boot:jar:1.4.0.RELEASE:compile
[INFO]    \- org.springframework.boot:spring-boot-autoconfigure:jar:1.4.0.RELEASE:compile

这是我的应用程序类:

@EntityScan(basePackageClasses = { Application.class, Jsr310JpaConverters.class })
@EnableScheduling
@EnableAsync
@SpringBootApplication(scanBasePackages = "com.sample")
public class Application extends Loggable implements AsyncConfigurer {

    /**
     * This forces the SNS topics to be created and/or linked.
     */
    @Autowired
    @SuppressWarnings("all")
    private TopicFactory topicFactory;

    /**
     * It all begins here.
     */
    public static void main(String[] args) throws Exception {
        SpringApplication application = new SpringApplication(Application.class);
        application.setBanner(new SampleBanner());
        application.run(args);
    }

    /**
     * Returns the @Async executor.
     */
    @Override
    public Executor getAsyncExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(4);
        executor.setMaxPoolSize(4);
        executor.setQueueCapacity(0);
        executor.setThreadNamePrefix("Async-");
        executor.initialize();
        return executor;
    }

    /**
     * Returns the uncaught exception handler for @Async operations.
     */
    @Override
    public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
        return (e, method, params) -> log.error("Uncaught async error", e);
    }
}

如果有人能指出我从哪里开始或导致它失败的原因,那将很有帮助。

最佳答案

可能的修复:

1) 将 authConfigFactory 设置为 Tomcat 8.5 使用的默认 AuthConfigFactory 实现(示例基本实现):

package com.example;

import org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import javax.security.auth.message.config.AuthConfigFactory;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        if (AuthConfigFactory.getFactory() == null) {
            AuthConfigFactory.setFactory(new AuthConfigFactoryImpl());
        }
        SpringApplication.run(DemoApplication.class, args);
    }
}

2) 从类路径中删除重复的 AuthConfigFactory 类。在我的例子中,同一个类有两种不同的实现:

org.apache.tomcat.embed/tomcat-embed-core/8.5.4/tomcat-embed-core-8.5.4.jar!/javax/security/auth/message/config/AuthConfigFactory.class
javax/javaee-api/7.0/javaee-api-7.0.jar!/javax/security/auth/message/config/AuthConfigFactory.class

javaee-api-7.0.jar 有它自己的 AuthConfigFactory 实现,它与 Tomcat 8.5 不完全兼容并导致 NullPointerException(在Tomcat的版本有定义默认jaspic实现类的常量) 从您的 gradle/mvn 项目中移除 javaee-api 依赖项(或任何其他包含不同 AuthConfigFactory 实现的项)(如果可以的话)

3) 将 Tomcat 降级到 8.0 或 7.0:

http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-use-tomcat-7

解释:

问题与 Tomcat 升级(从 8.0.x 到 8.5.x)有关,这是在 Spring Boot 从 1.3.x 升级到 1.4 期间进行的。 问题是 Tomcat 8.5 引入了 jaspic 支持(https://tomcat.apache.org/tomcat-8.5-doc/config/jaspic.html)并提供了它自己的 AuthConfigFactory 实现。此实现定义了默认的 jaspic 身份验证工厂实现:

private static final String DEFAULT_JASPI_AUTHCONFIGFACTORYIMPL =
            "org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl";

这在其他实现中没有定义(例如来自 javaee-api-7.0 的实现)并导致 NullPointerException 因为没有实例化 AuthConfigFactory。

关于spring - 将 Spring Boot 从 1.3.7 升级到 1.4.0,导致 AuthenticatorBase.getJaspicProvider 出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38876045/

相关文章:

java.lang.ClassNotFoundException 太阳.misc.GC

mysql - Liferay 7 + MySql 5.5.44 不支持

java - Spring应用程序构建失败

java - 在tomcat服务器上上传新文件时刷新项目资源文件夹

spring - 通过@Bean 提供的 RestTemplateBuilder 流式上传缓冲完整文件

java - Junit减少控制台详细日志

Spring,JMS - 无法为 XML 架构命名空间找到 Spring NamespaceHandler

java - 将数字表示转换为人类可读的字符串

java - 搜索没有主键的记录

java - 在 AWS EC2 上配置 Tomcat8?