2016-12-02 20 views
0

私はymlファイルを読み込んでJavaオブジェクトに読み込むためにsnakeymlを使用しています。コンストラクタ引数が渡されたときに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

あなたは* * "インスタンスが作成されていない" とはどういう意味ですか? 'new 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> 
関連する問題