Java 类装入器问题。同一jar中的子类是';不是子类型';

Java 类装入器问题。同一jar中的子类是';不是子类型';,java,classloader,Java,Classloader,从同一个log4j-api-2.10.0.jar加载的EnvironmentPropertySource怎么可能不是PropertySource的子类型 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/imp

从同一个log4j-api-2.10.0.jar加载的
EnvironmentPropertySource
怎么可能不是
PropertySource
的子类型

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/app/opt/cloudera/parcels/CDH-5.10.1-1.cdh5.10.1.p0.10/jars/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
[Loaded org.slf4j.spi.LoggerFactoryBinder from file:/app/opt/cloudera/parcels/CDH-5.10.1-1.cdh5.10.1.p0.10/jars/slf4j-api-1.7.5.jar]
[Loaded org.slf4j.impl.StaticLoggerBinder from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-slf4j-impl-2.10.0.jar]
[Loaded org.apache.logging.log4j.spi.LoggerAdapter from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.log4j.spi.AbstractLoggerAdapter from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.slf4j.Log4jLoggerFactory from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-slf4j-impl-2.10.0.jar]
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
[Loaded org.apache.logging.log4j.util.StackLocatorUtil from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.log4j.util.StackLocator from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.log4j.util.LoaderUtil from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.log4j.util.LoaderUtil$ThreadContextClassLoaderGetter from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.log4j.util.PropertiesUtil from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.log4j.util.PropertySource from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.log4j.util.PropertiesUtil$Environment from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.log4j.util.BiConsumer from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.log4j.util.PropertiesPropertySource from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.log4j.util.PropertyFilePropertySource from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.log4j.util.PropertySource$Comparator from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.log4j.util.PropertySource from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.log4j.util.EnvironmentPropertySource from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded java.util.ServiceConfigurationError from /usr/lib/jvm/java-1.8.0-oracle-1.8.0.151.x86_64/jre/lib/rt.jar]
Exception in thread "main" [Loaded java.lang.Throwable$PrintStreamOrWriter from /usr/lib/jvm/java-1.8.0-oracle-1.8.0.151.x86_64/jre/lib/rt.jar]
[Loaded java.lang.Throwable$WrappedPrintStream from /usr/lib/jvm/java-1.8.0-oracle-1.8.0.151.x86_64/jre/lib/rt.jar]
[Loaded java.util.IdentityHashMap$KeySet from /usr/lib/jvm/java-1.8.0-oracle-1.8.0.151.x86_64/jre/lib/rt.jar]
java.util.ServiceConfigurationError: org.apache.logging.log4j.util.PropertySource: Provider org.apache.logging.log4j.util.EnvironmentPropertySource not a subtype
    at java.util.ServiceLoader.fail(ServiceLoader.java:239)
    at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
    at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376)
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
    at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
    at org.apache.logging.log4j.util.PropertiesUtil$Environment.<init>(PropertiesUtil.java:319)
    at org.apache.logging.log4j.util.PropertiesUtil$Environment.<init>(PropertiesUtil.java:310)
    at org.apache.logging.log4j.util.PropertiesUtil.<init>(PropertiesUtil.java:69)
    at org.apache.logging.log4j.util.PropertiesUtil.<clinit>(PropertiesUtil.java:49)
    at org.apache.logging.log4j.util.LoaderUtil.isIgnoreTccl(LoaderUtil.java:256)
    at org.apache.logging.log4j.util.LoaderUtil.loadClass(LoaderUtil.java:159)
    at org.apache.logging.log4j.util.StackLocator.<clinit>(StackLocator.java:65)
    at org.apache.logging.log4j.util.StackLocatorUtil.<clinit>(StackLocatorUtil.java:28)
    at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:42)
    at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:46)
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)
    at com.company.producer.BmssProducerApp.<clinit>(BmssProducerApp.java:42)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.spark.util.Utils$.classForName(Utils.scala:229)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:695)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
SLF4J:类路径包含多个SLF4J绑定。
SLF4J:在[jar:file:/home/extproc/WMA/bmss/bmss dev/producer/lib/log4j-SLF4J-impl-2.10.0.jar!/org/SLF4J/impl/StaticLoggerBinder.class]中找到绑定
SLF4J:在[jar:file:/app/opt/cloudera/parcels/CDH-5.10.1-1.cdh5.10.1.p0.10/jars/SLF4J-log4j12-1.7.5.jar!/org/SLF4J/impl/StaticLoggerBinder.class]中找到绑定
SLF4J:参见http://www.slf4j.org/codes.html#multiple_bindings 我需要一个解释。
[从文件中加载org.slf4j.spi.LoggerFactoryBinder:/app/opt/cloudera/parcels/CDH-5.10.1-1.cdh5.10.1.p0.10/jars/slf4j-api-1.7.5.jar]
[从文件加载org.slf4j.impl.StaticLoggerBinder:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-slf4j-impl-2.10.0.jar]
[已从文件加载org.apache.logging.log4j.spi.LoggerAdapter:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.log4j.spi.AbstractLoggerAdapter from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[已从文件加载org.apache.logging.slf4j.Log4jLoggerFactory:/home/extproc/WMA/bmss/bmss dev/producer/lib/log4j-slf4j-impl-2.10.0.jar]
SLF4J:实际绑定的类型为[org.apache.logging.SLF4J.Log4jLoggerFactory]
[从文件加载org.apache.logging.log4j.util.StackLocatorUtil:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[已从文件中加载org.apache.logging.log4j.util.StackLocator:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[从文件加载org.apache.logging.log4j.util.LoaderUtil:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[从文件:/home/extproc/WMA/bmss/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar加载org.apache.logging.log4j.util.LoaderUtil$ThreadContextClassLoaderGetter]
[已从文件:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar加载org.apache.logging.log4j.util.PropertiesUtil]
[已从文件加载org.apache.logging.log4j.util.PropertySource:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[已从文件:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar加载org.apache.logging.log4j.util.PropertiesUtil$Environment]
[从文件加载org.apache.logging.log4j.util.BiConsumer:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[已从文件加载org.apache.logging.log4j.util.PropertiesPropertySource:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[已从文件加载org.apache.logging.log4j.util.PropertyFilePropertySource:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[Loaded org.apache.logging.log4j.util.PropertySource$Comparator from file:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[已从文件加载org.apache.logging.log4j.util.PropertySource:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[已从文件加载org.apache.logging.log4j.util.EnvironmentPropertySource:/home/extproc/WMA/bmss/bmss-dev/producer/lib/log4j-api-2.10.0.jar]
[从/usr/lib/jvm/java-1.8.0-oracle-1.8.0.151.x86_64/jre/lib/rt.jar加载的java.util.ServiceConfigurationError]
线程“main”[从/usr/lib/jvm/java-1.8.0-oracle-1.8.0.151.x86_64/jre/lib/rt.jar加载的java.lang.Throwable$PrintStreamOrWriter]中出现异常
[从/usr/lib/jvm/java-1.8.0-oracle-1.8.0.151.x86_64/jre/lib/rt.jar加载的java.lang.Throwable$WrappedPrintStream]
[从/usr/lib/jvm/java-1.8.0-oracle-1.8.0.151.x86_64/jre/lib/rt.jar加载的java.util.IdentityHashMap$KeySet]
java.util.ServiceConfigurationError:org.apache.logging.log4j.util.PropertySource:Provider org.apache.logging.log4j.util.EnvironmentPropertySource不是子类型
在java.util.ServiceLoader.fail处(ServiceLoader.java:239)
在java.util.ServiceLoader.access$300(ServiceLoader.java:185)
位于java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376)
位于java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
位于java.util.ServiceLoader$1.next(ServiceLoader.java:480)
位于org.apache.logging.log4j.util.PropertiesUtil$Environment.(PropertiesUtil.java:319)
位于org.apache.logging.log4j.util.PropertiesUtil$Environment.(PropertiesUtil.java:310)
位于org.apache.logging.log4j.util.PropertiesUtil.(PropertiesUtil.java:69)
位于org.apache.logging.log4j.util.PropertiesUtil.(PropertiesUtil.java:49)
位于org.apache.logging.log4j.util.LoaderUtil.Isignoretcl(LoaderUtil.java:256)
位于org.apache.logging.log4j.util.LoaderUtil.loadClass(LoaderUtil.java:159)
位于org.apache.logging.log4j.util.StackLocator(StackLocator.java:65)
位于org.apache.logging.log4j.util.StackLocatorUtil.(StackLocatorUtil.java:28)
位于org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:42)
位于org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:46)
位于org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
位于org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270)
位于org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)
在com.company.producer.BmssProducerApp.(BmssProducerApp.java:42)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:348)
位于org.apache.spark.util.Utils$.classForName(Utils.scala:229)
位于org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:695)
位于org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187)
位于org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212)
位于org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126)
位于org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

首先,检查同一个jar是否有多个版本

其次,如果您使用的是IDE,