当 spring 启动 Web 应用程序中的 运行 jar 文件时,创建名称为 'ConfigurationPropertiesBindingPostProcessor' 的 bean 时出错

Error creating bean with name 'ConfigurationPropertiesBindingPostProcessor' when running jar file in spring boot web application

虽然我可以通过 mvn spring-boot:运行 运行 启动 jar 包 运行 我的 Spring 引导 Web 应用程序发生错误. 你能帮我解决这个错误吗? 我在数据源配置中使用:

@PropertySource(value = {"classpath:datasource-postgresql.properties"})

我的 pom 文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>MultiTenancyDemo</artifactId>
    <!-- <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> -->

    <name>MultiTenancyDemo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <p.type>jar</p.type>
        <start-class>com.example.demo.MultiTenancyDemoApplication</start-class>
        <maven.test.skip>true</maven.test.skip>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <!-- For Thymeleaf VIEW. Remove it if using Jsp VIEW -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.4.2.Final</version>
        </dependency>

        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk</artifactId>
            <version>1.11.163</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ibatis</groupId>
            <artifactId>ibatis-sqlmap</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mindrot</groupId>
            <artifactId>jbcrypt</artifactId>
            <version>0.3m</version>
        </dependency>
    </dependencies>

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

    <packaging>${p.type}</packaging>
</project>

我 运行 通过 window 命令行:

java -jar target\MultiTenancyDemo-2.0.0.RELEASE.jar

java -jar target\MultiTenancyDemo-2.0.0.RELEASE.jar --spring .config.location=application.properties,datasource-postgresql.properties

错误:

Error starting ApplicationContext. To display the conditions report re-run your
application with 'debug' enabled.
2018-03-29 11:52:46.370 ERROR 7844 --- [           main] o.s.boot.SpringApplicat
ion               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean wit
h name 'org.springframework.boot.context.properties.ConfigurationPropertiesBindi
ngPostProcessor': Invocation of init method failed; nested exception is java.uti
l.ServiceConfigurationError: javax.validation.spi.ValidationProvider: Error read
ing configuration file
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.initializeBean(AbstractAutowireCapableBeanFactory.java:1710) ~[spring-be
ans-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.doCreateBean(AbstractAutowireCapableBeanFactory.java:583) ~[spring-beans
-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.createBean(AbstractAutowireCapableBeanFactory.java:502) ~[spring-beans-5
.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$
doGetBean[=15=](AbstractBeanFactory.java:312) ~[spring-beans-5.0.4.RELEASE.jar!/:5.0
.4.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistr
y.getSingleton(DefaultSingletonBeanRegistry.java:228) ~[spring-beans-5.0.4.RELEA
SE.jar!/:5.0.4.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBe
an(AbstractBeanFactory.java:310) ~[spring-beans-5.0.4.RELEASE.jar!/:5.0.4.RELEAS
E]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean
(AbstractBeanFactory.java:205) ~[spring-beans-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]

        at org.springframework.context.support.PostProcessorRegistrationDelegate
.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:205) ~[spring
-context-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.regist
erBeanPostProcessors(AbstractApplicationContext.java:709) ~[spring-context-5.0.4
.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.refres
h(AbstractApplicationContext.java:534) ~[spring-context-5.0.4.RELEASE.jar!/:5.0.
4.RELEASE]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicat
ionContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.
0.0.RELEASE.jar!/:2.0.0.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.
java:752) [spring-boot-2.0.0.RELEASE.jar!/:2.0.0.RELEASE]
        at org.springframework.boot.SpringApplication.refreshContext(SpringAppli
cation.java:388) [spring-boot-2.0.0.RELEASE.jar!/:2.0.0.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java
:327) [spring-boot-2.0.0.RELEASE.jar!/:2.0.0.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java
:1246) [spring-boot-2.0.0.RELEASE.jar!/:2.0.0.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java
:1234) [spring-boot-2.0.0.RELEASE.jar!/:2.0.0.RELEASE]
        at com.example.demo.MultiTenancyDemoApplication.main(MultiTenancyDemoApp
lication.java:31) [classes!/:2.0.0.RELEASE]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.
0_131]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.
0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:
1.8.0_131]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_131]
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner
.java:48) [MultiTenancyDemo-2.0.0.RELEASE.jar:2.0.0.RELEASE]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [Mu
ltiTenancyDemo-2.0.0.RELEASE.jar:2.0.0.RELEASE]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) [Mu
ltiTenancyDemo-2.0.0.RELEASE.jar:2.0.0.RELEASE]
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
 [MultiTenancyDemo-2.0.0.RELEASE.jar:2.0.0.RELEASE]
Caused by: java.util.ServiceConfigurationError: javax.validation.spi.ValidationP
rovider: Error reading configuration file
        at java.util.ServiceLoader.fail(Unknown Source) ~[na:1.8.0_131]
        at java.util.ServiceLoader.parse(Unknown Source) ~[na:1.8.0_131]
        at java.util.ServiceLoader.access0(Unknown Source) ~[na:1.8.0_131]
        at java.util.ServiceLoader$LazyIterator.hasNextService(Unknown Source) ~
[na:1.8.0_131]
        at java.util.ServiceLoader$LazyIterator.hasNext(Unknown Source) ~[na:1.8
.0_131]
        at java.util.ServiceLoader.hasNext(Unknown Source) ~[na:1.8.0_131]
        at javax.validation.Validation$GetValidationProviderListAction.loadProvi
ders(Validation.java:381) ~[validation-api-2.0.1.Final.jar!/:na]
        at javax.validation.Validation$GetValidationProviderListAction.run(Valid
ation.java:356) ~[validation-api-2.0.1.Final.jar!/:na]
        at javax.validation.Validation$GetValidationProviderListAction.getValida
tionProviderList(Validation.java:338) ~[validation-api-2.0.1.Final.jar!/:na]
        at javax.validation.Validation$DefaultValidationProviderResolver.getVali
dationProviders(Validation.java:320) ~[validation-api-2.0.1.Final.jar!/:na]
        at javax.validation.Validation$GenericBootstrapImpl.configure(Validation
.java:277) ~[validation-api-2.0.1.Final.jar!/:na]
        at org.springframework.boot.validation.MessageInterpolatorFactory.getObj
ect(MessageInterpolatorFactory.java:53) ~[spring-boot-2.0.0.RELEASE.jar!/:2.0.0.
RELEASE]
        at org.springframework.boot.context.properties.ConfigurationPropertiesJs
r303Validator$Delegate.<init>(ConfigurationPropertiesJsr303Validator.java:71) ~[
spring-boot-2.0.0.RELEASE.jar!/:2.0.0.RELEASE]
        at org.springframework.boot.context.properties.ConfigurationPropertiesJs
r303Validator.<init>(ConfigurationPropertiesJsr303Validator.java:43) ~[spring-bo
ot-2.0.0.RELEASE.jar!/:2.0.0.RELEASE]
        at org.springframework.boot.context.properties.ConfigurationPropertiesJs
r303Validator.getIfJsr303Present(ConfigurationPropertiesJsr303Validator.java:64)
 ~[spring-boot-2.0.0.RELEASE.jar!/:2.0.0.RELEASE]
        at org.springframework.boot.context.properties.ConfigurationPropertiesBi
nder.<init>(ConfigurationPropertiesBinder.java:69) ~[spring-boot-2.0.0.RELEASE.j
ar!/:2.0.0.RELEASE]
        at org.springframework.boot.context.properties.ConfigurationPropertiesBi
ndingPostProcessor.afterPropertiesSet(ConfigurationPropertiesBindingPostProcesso
r.java:78) ~[spring-boot-2.0.0.RELEASE.jar!/:2.0.0.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1769) ~[spring
-beans-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.initializeBean(AbstractAutowireCapableBeanFactory.java:1706) ~[spring-be
ans-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        ... 24 common frames omitted
Caused by: java.util.zip.ZipException: invalid code lengths set
        at java.util.zip.InflaterInputStream.read(Unknown Source) ~[na:1.8.0_131
]
        at org.springframework.boot.loader.jar.ZipInflaterInputStream.read(ZipIn
flaterInputStream.java:52) ~[MultiTenancyDemo-2.0.0.RELEASE.jar:2.0.0.RELEASE]
        at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) ~[na:1.8.0_131]
        at sun.nio.cs.StreamDecoder.implRead(Unknown Source) ~[na:1.8.0_131]
        at sun.nio.cs.StreamDecoder.read(Unknown Source) ~[na:1.8.0_131]
        at java.io.InputStreamReader.read(Unknown Source) ~[na:1.8.0_131]
        at java.io.BufferedReader.fill(Unknown Source) ~[na:1.8.0_131]
        at java.io.BufferedReader.readLine(Unknown Source) ~[na:1.8.0_131]
        at java.io.BufferedReader.readLine(Unknown Source) ~[na:1.8.0_131]
        at java.util.ServiceLoader.parseLine(Unknown Source) ~[na:1.8.0_131]
        ... 42 common frames omitted

我找到根本原因是因为我的 maven 无法下载库文件。删除m2文件夹中的repositories文件夹后,修复网络,我可以运行 jar文件。