【问题标题】:How to read properties file using org.apache.commons.configuration2?如何使用 org.apache.commons.configuration2 读取属性文件?
【发布时间】:2017-02-27 14:20:27
【问题描述】:

我正在尝试使用 org.apache.commons.configuration2 读取属性文件并在下面出现错误,请让我知道我做错了什么我正在通过给定链接 https://commons.apache.org/proper/commons-configuration/userguide/quick_start.html 寻求帮助

File:- xyz.properties

driver = "oracle.jdbc.driver.OracleDriver"
url = "jdbc:oracle:thin:@xxxx:1521/xxxx.xxxx"
username = "xxx"
password = "xxx"
input_file = "C:\\Users\\xxx\\test\\src\\main\\resources\\xxxx.xlsx"


code:- File.scala

import org.apache.commons.configuration2.builder.fluent.{Configurations}

object Configuration {

def main(args: Array[String]): Unit = {

    val config = new Configurations();
    val configs = config.properties(new File("xyz.properties"));


    val inputFile = configs.getString("input_file")

    val userName = configs.getString("username")
    val password = configs.getString("password")
    val driver = configs.getString("driver")
    val url = configs.getString("url")


    println("Inside config" + inputFile )       
}
}

Error :-
Exception in thread "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.<clinit>(Unknown Source)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:739)
    at org.apache.commons.configuration2.builder.fluent.Parameters.createParametersProxy(Parameters.java:294)
    at org.apache.commons.configuration2.builder.fluent.Parameters.fileBased(Parameters.java:185)
    at org.apache.commons.configuration2.builder.fluent.Configurations.fileParams(Configurations.java:602)
    at org.apache.commons.configuration2.builder.fluent.Configurations.fileParams(Configurations.java:614)
    at org.apache.commons.configuration2.builder.fluent.Configurations.fileBasedBuilder(Configurations.java:132)
    at org.apache.commons.configuration2.builder.fluent.Configurations.propertiesBuilder(Configurations.java:238)
    at org.apache.commons.configuration2.builder.fluent.Configurations.properties(Configurations.java:282)
    at com.rxcorp.italy.config.Configuration$.<init>(File.scala:8)
    at com.rxcorp.italy.config.Configuration$.<clinit>(Configuration.scala)
    at com.rxcorp.paneldataloading.ItalyPanelData$.main(File.scala:19)

sbt 文件

name := "xxx.xxxx.xxxxx"

scalaVersion := "2.10.6"

ivyScala := ivyScala.value map{ _.copy(overrideScalaVersion = true) }


libraryDependencies ++= Seq("org.apache.spark" %% "spark-core" % "2.1.0",
  "com.databricks" %% "spark-csv" % "1.5.0",
"org.apache.commons" % "commons-configuration2" % "2.1.1"  )

【问题讨论】:

  • 您能否在问题中包含您的 sbt 文件设置(libraryDependencies)。
  • @rogue-one 我已经添加了 sbt 文件,请看上面的更新。

标签: java apache scala


【解决方案1】:

您需要将 commons-beanutils 工件添加到 sbt 中的 libraryDependencies 以解决此问题。所以你的 sbt 文件的libraryDependencies 如下所示。

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "2.1.0",
  "com.databricks" %% "spark-csv" % "1.5.0",
  "org.apache.commons" % "commons-configuration2" % "2.1.1",
  "commons-beanutils" % "commons-beanutils" % "1.9.3"
)

【讨论】:

  • 感谢您的回复,现在我在线程“main”java.lang.NoClassDefFoundError: scala/xml/MetaData 中收到此“错误异常”
  • 你应该添加 "org.scala-lang" % "scala-xml" % "2.10.6" 到libraryDependencies
  • 现在我在线程“main”java.lang.NoSuchMethodError 中收到此错误异常:org.apache.commons.beanutils.PropertyUtilsBean.addBeanIntrospector(Lorg/apache/commons/beanutils/BeanIntrospector;) V
  • 我忘了包含另一个错误是 org.scala-lang#scala-xml;2.10.6: not found
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 1970-01-01
  • 2016-09-08
相关资源
最近更新 更多