2017-02-27 61 views
0

我想要的屬性文件中使用org.apache.commons.configuration2並獲得下面請讓我知道錯誤,閱讀,我做錯了,我正在幫助與給定鏈路https://commons.apache.org/proper/commons-configuration/userguide/quick_start.html如何使用org.apache.commons.configuration2讀取屬性文件?

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" ) 
+0

您可以在這個問題您SBT文件中的設置(libraryDependencies)。 –

+0

@ rogue-one我已添加sbt文件,請參閱上面更新。 –

回答

0

需要公地BeanUtils的神器添加到您的libraryDependencies在SBT來解決這個問題。所以你的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" 
) 
+0

感謝您的回覆現在我得到這個「線程錯誤異常」主要「java.lang.NoClassDefFoundError:scala/xml/MetaData」 –

+0

你應該添加「org.scala-lang」%「scala-xml」%「2.10 .6「到'libraryDependencies' –

+0

@thehacker您能否確認解決方案是否有效? –