【发布时间】:2018-09-26 06:13:31
【问题描述】:
我正在使用org.apache.commons:commons-configuration2 来加载和合并来自不同来源的配置:
val root = CompositeConfiguration()
root.addConfiguration(SystemConfiguration())
val configurations = Configurations()
root.addConfiguration(configurations.properties("defaults.properties"))
我的问题是,每当我运行此代码时,都会出现异常:
线程“主”java.lang.NoClassDefFoundError 中的异常: org/apache/commons/beanutils/BeanIntrospector 在 java.lang.Class.forName0(本机方法)在 java.lang.Class.forName(Class.java:264) 在 com.sun.proxy.$Proxy0.(Unknown Source) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 java.lang.reflect.Proxy.newProxyInstance(Proxy.java:739) 在 org.apache.commons.configuration2.builder.fluent.Parameters.createParametersProxy(Parameters.java:294) 在 org.apache.commons.configuration2.builder.fluent.Parameters.fileBased(Parameters.java:185) 在 org.apache.commons.configuration2.builder.fluent.Configurations.fileParams(Configurations.java:602) 在 org.apache.commons.configuration2.builder.fluent.Configurations.fileParams(Configurations.java:638) 在 org.apache.commons.configuration2.builder.fluent.Configurations.fileBasedBuilder(Configurations.java:164) 在 org.apache.commons.configuration2.builder.fluent.Configurations.propertiesBuilder(Configurations.java:264) 在 org.apache.commons.configuration2.builder.fluent.Configurations.properties(Configurations.java:318) 在 io.sspinc.datahub.sparkapp.MainKt.main(main.kt:18) 引起: java.lang.ClassNotFoundException: org.apache.commons.beanutils.BeanIntrospector 在 java.net.URLClassLoader.findClass(URLClassLoader.java:381) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357)
它说没有找到org.apache.commons.beanutils.BeanIntrospector。如果我将 commons-beanutils:commons-beanutils:1.9.3 添加到类路径,问题就解决了,但主要问题是 我在托管环境 (Databricks) 中使用 Apache Spark 2.3.0 并且它带有 commons-beanutils:1.7.0 所以我对 beanutils 版本无能为力。
我该如何解决这个问题?
【问题讨论】:
-
当你将
commons-beanutils:commons-beanutils:1.7.0添加到类路径时会发生什么? -
同样的错误。在文档中 config2 说它只适用于
1.9.3或更高版本。如果我改用commons-configurations:1.10,则不会出现异常。 -
你能明确排除
commons-beanutils:commons-beanutils:1.7.0吗?
标签: java apache-spark apache-commons databricks