この問題に遭遇しました: org.apache.commons.configuration.XMLConfiguration.save(String fileName) を呼び出すと、2 回変更されていないプロパティが書き込まれます。たとえば、この foo.xml からすべてのプロパティをロードします。
<config>
<foo>value</foo>
<bar>value2</bar>
</config>
すべて正しくロードされました。次に、XMLConfiguration.setProperty("foo", "new_value") を呼び出して foo の値を変更し、すぐに XMLConfiguration.save(fileName) を呼び出すと、次のようになります。
<config>
<foo>new_value</foo>
<bar>value2</bar>
<bar>value2</bar>
</config>
アプリケーションを閉じて再起動し、これらのアクションを繰り返すと、バーの数が再び 2 倍になりますが、1 回の変更ですべてのパラメーターが実行されると、すべてが正しく書き込まれます。
私はこのように書き込もうとしましたが、結果は得られません:
config.setProperty("bar", config.getString("bar"));
助けてください...これは魔法だと思います...
UPD: 問題は解決しました。レシピは簡単です。XMLConfiguration.load() は XMLConfiguration コンストラクターで既に呼び出されているため、呼び出さないでください。