2016-12-02 139 views
0

我正在使用snakeyml讀取yml文件並將其加載到Java對象中。當構造函數參數傳遞時未創建Yaml實例

問題: 當我做Yaml yml = new Yaml()時,創建了yml實例。但是當我傳遞構造函數參數時,不會創建yml實例。我也沒有看到一個例外。這是完整的代碼。在下面的語句

private static YamlConfig readStatsConfig() 
     throws IOException { 

    InputStream input = new FileInputStream(new File(configFile)); 
    Constructor constructor = new Constructor(YamlConfig.class); 

    TypeDescription description = new TypeDescription(YamlConfig.class); 
    description.putListPropertyType("resources", YamlConfig.Resource.class); 
    constructor.addTypeDescription(description); 

    TypeDescription description = new TypeDescription(
        YamlConfig.Resource.class); 
    description.putListPropertyType("stats", YamlConfig.StatsInfo.class); 
    constructor.addTypeDescription(description); 

    Yaml yaml = new Yaml(constructor); 

    YamlConfig cfg = (YamlConfig) yaml.load(input); 

    mainLogger.info(cfg); 

    return cfg; 
} 

代碼退出:

Yaml yaml = new Yaml(constructor); 
+1

你是什麼意思* 「不創建實例」 *? '新Yaml(構造函數)'將返回一個實例,否則會拋出一個異常。實際上沒有其他可能的結果*(除非JVM本身崩潰)*。 – Andreas

+0

我的意思是代碼在語句中退出,Yaml yaml = new Yaml(構造函數)。我調試了代碼以查看語句Yaml yaml1 = new Yaml()是否工作,並且它工作正常。我認爲在創建的構造函數實例中存在一些問題,但是根據我的調試,我沒有看到任何問題。是否有任何其他建議來實現相同的功能? – curious

+0

*「聲明中的代碼退出」*是什麼意思?由於異常,您的方法在那裏停止運行?如果是這樣,這個例外是什麼意思? – Andreas

回答

0
I fixed the issue by excluding snakeyml dependency in TestNG JARs. All we need to do is to add the following in the project POM has dependency with TestNG. 

<dependency> 
      <groupId>org.testng</groupId> 
      <artifactId>testng</artifactId> 
      <version>6.3.1</version> 
      <type>jar</type> 
      <exclusions> 
       <exclusion> 
        <artifactId>snakeyaml</artifactId> 
        <groupId>org.yaml</groupId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
相關問題