我正在使用org.apache.commons:commons-configuration2
来加载和合并来自不同来源的配置:
val root = CompositeConfiguration()
root.addConfiguration(SystemConfiguration())
val configurations = Configurations()
root.addConfiguration(configurations.properties("defaults.properties"))
我的问题是每当我运行此代码时,我都会遇到异常:
线程“main”中的异常java.lang.NoClassDefFoundError: org / apache / commons / beanutils / BeanIntrospector at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:264)at com.sun.proxy。$ Proxy0。(未知来源)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在java.lang.reflect.Proxy.newProxyInstance(Proxy.java:739)at org.apache.commons.configuration2.builder.fluent.Parameters.createParametersProxy(Parameters.java:294)at at 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 at java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:338)at at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
它表示找不到org.apache.commons.beanutils.BeanIntrospector
。如果我将commons-beanutils:commons-beanutils:1.9.3
添加到类路径中,问题就解决了,但主要问题是我在托管环境中使用Apache Spark 2.3.0(Databricks),它附带{{ 1}}所以我对beanutils版本无能为力。
我该如何解决这个问题?
答案 0 :(得分:1)
如果您只想要复合配置功能表单 commons-configuration ,则可能需要尝试使用commons-configuration:commons-configuration:1.10
。它的工作原理如下:
val root = CompositeConfiguration()
root.addConfiguration(SystemConfiguration())
root.addConfiguration(PropertiesConfiguration("defaults.properties"))
根据their documentation,配置2不适用于1.7.0
bean util。