問題タブ [apache-commons-config]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Maven が commons-configuration のすべての依存関係を解決しないのはなぜですか?
概要
XMLConfiguration configuration = new XMLConfiguration("config/config.xml");
私だけで試してみるときcommons-configuration 1.10
、依存関係をさらに追加する必要があります(つまりcommons-collections
、より新しくない3.2.1
)。なぜそうであり、必要なすべての依存関係を単純に解決しないのはなぜですか?
詳細
commons-configurationを機能させようとしています。最初に、最新バージョンの 2.0-alpha2 を使用したかったのですが、正しいリソースをダウンロードするように Maven を構成できなかったため、まったくうまく機能しませんでしたが、それは別の話です。
バージョン 1.10 が実際には「1.10」(「1.1 ゼロ」ではない) であり、したがって commons-configuration 1 の最新バージョン (およびチュートリアルでカバーされている) であることがわかった後、代わりに試してみることにしました。 .
私のMaven依存関係(Eclipseに統合されている)については、次を使用しました:
ただし、この例を試すと、次のようになります。
次の config.xml を使用します。
エラーが発生しました:
私は最初、彼ら (もちろん私ではありません) がいくつかの Maven の依存関係を台無しにしただけであることを望みましたが、どちらのバージョンを使用するかを気にする必要がなくなったので (2.0 を動作させることができませんでした、覚えていますか?)、バージョンを下げることにしました。 1.9 Maven の依存関係を次のように置き換えます。
これで問題はかなり解決しました。テストケースが実行されています。
しかし、 Very simple Apache-commons configuration example throws NoClassDefFoundError and its follow-up questionで参照されているものと同様の例を実装しようとすると、そこで参照されているのとまったく同じエラーが発生しましたが、解決策として、インポートorg.apache.commons.beanutils.PropertyUtils
が機能していません。 beanutils がありません。したがって、基本的にダウングレードすることで、コレクションが見つからないというエラーから beanutils が見つからないというエラーに切り替えました。
何をするときにどの依存関係が使用されているかを確認できる依存関係の概要があります。CollectionUtils
バージョン 1.10では、コンストラクター呼び出しで 1.9 とは別の依存関係 (つまり ) が使用されていることを知って、少し驚きました。1.10 にも 1.9 にも依存関係の問題があったので、私は新しいバージョンに固執しました。
CollectionUtils
次のアーティファクトにあることがわかりました( mavenリポジトリによって指摘されたため):
悲しいことに(最初はわかりませんが)CollectionUtils
、 packagecollections
ではなくpackage でクラスを定義していますcollections4
。依存関係の概要でこの問題が示唆されましたが、以前のバージョンで発生する可能性のある問題についてのみ言及されていました...私はもうそれについてあまり考えていないように見えましたが、単に依存関係を次のように変更しました:
これらの依存関係を使用した後、すべてが機能するようになりました(多かれ少なかれ、クラス定義の欠落に依存する例外はなくなりました):
自分で依存関係を追加する必要があるのはなぜですか? Maven を使用することの要点は、そのようなことをしなくても済むようにすることであり、javadoc とソース ファイルに関しては、かなりうまく機能すると思いました。
今では、おそらくオーバーヘッドを避けるために、依存関係が設計上階層に含まれていないことを確信しています (そうですか?)。ただし、すべての依存関係を一度に取得する方法、または必要なすべての依存関係を取得する方法はありますか? そして、なぜこのように設計されているのですか?
java - Commons XMLConfiguration とスキーマ検証?
構成に Apache Commons XMLConfiguration を使用しています。今、スキーマベースの検証が必要です。しかし、xsd を XMLConfiguration に追加するのに問題があります。xsd は、アプリケーションの jar ファイルにあります。
Java SE のメソッドを使用すると、検証は問題なく実行されます。
しかし、DefaultEntityResolver で XMLConfiguration を使用すると、成功しません。
次の例外が発生します。
「configuration」は、config_default.xml のルート要素です。これは、xsdが見つからないことを意味すると思います。
私の最初の問題は、resolver.registerEntityId("configuration", urlXsd); の最初のパラメーターに何を入力する必要がありますか? スキーマのパブリック ID とは何ですか? ドキュメントには、DTD パブリック ID の例のみが示されています。
削減されたスキーマと xml -> xml は次のとおりです。
スキーマ:
更新: dbank の回答に基づく私のテスト:
無効な xml でテストしましたが、出力にエラーしか表示されません。例外はスローされませんでした。
更新 - xml 内の xsd へのパス: コールバック ベースの処理はあまり良くないと思います。あなたの最初の提案に基づいて、xsdへのパスをxmlでテストしました。ただし、これは 1 つのトレイルに対してのみ実行されます。
最初の実行は正しく処理されます。xsi:noNamespaceSchemaLocation="config_schema.xsd" に基づいて、jar から xsd を取得します。次に、jar からロードされたデフォルトの構成をローカル ファイルシステムに書き込みます。書き込まれたファイルを確認しましたが、奇妙な考えは見つかりません。次に、サンプル アプリを 2 回実行しますが、次のエラーが発生します。
彼は xsd を見つけることができませんが、パスは xml ファイルで正しく、最初の実行と同じです。最初の楽しみで xsd を見つけることができるのに、2 回目の実行では見つけられないのはなぜですか?
2 番目の質問は、XMLConfiguration から出力される可能性のあるすべてのログですか?
更新 3:再度テストしたところ、xsd をローカル ファイルシステムに配置すると、2 回目の実行で問題が発生しないことがわかりました。パスがxmlで定義されている場合、問題はxsdの相対検索だと思います。
ローカルファイルシステムからxmlをロードし、jarファイルにあるスキーマで検証することは可能ですか? load() または refresh() の呼び出しでコールバックと直接例外処理を行わずに解決策を検索します。
よろしくお願いします、
java - Apache Commons Configuration と BeanUtils を使用して XML から Bean に配列を読み取る
構成ファイルには、電話帳の名前など、複数の配列値があります。
これらを BeanHelper (または別の方法) を介してこの Bean に読み込みたい:
または理想的にはjava.util.List<String>
、配列の代わりにリストを使用しますString[]
。インターフェイスの実装は簡単です。
メインは次のようになります。
これは、Bean を作成しようとすると機能しません。これがConfigurationRuntimeException
原因で発生しますUnsupportedOperationException
。
最初に変更しなければならなかったのは、 XMLBeanDeclarationとXMLConfigurationのドキュメントに一致するように XML ファイルのレイアウトを変更することでした。
次にプログラムを実行すると、正常に終了し、出力は次のようになります。
つまりXMLConfiguration
、 は属性名に配列を含む構成ファイルを正しく識別しますが、どういうわけか XMLBeanDeclaration は識別しません。常に最後の値を取ります。
配列を単一の s として読み取ることができるという事実を悪用することで、多かれ少なかれ機能するソリューションを思いつきましたString
。行を追加しましたconfig.setAttributeSplittingDisabled(true);
。結果は次のとおりです。
この場合、Bean の作成時にBeanHelper
配列が認識され、正しいメソッドを選択できるように見えます。
これにより構成が少し柔軟性に欠けるので、XMLBeanDeclaration
への呼び出しを避けるために、早い段階で配列を処理することが可能かどうか疑問に思いconfig.setAttributeSplittingDisabled(true);
ます。
Java 8、Configuration 1.10、および BeanUtils 1.9.2 を使用しています。
java - Apache Commons のプロパティ ファイルの値で満たされた xml 構成を保存する方法 構成を保存できません
groovy スクリプトで Apache Commons Configuration を使用して、単純なプロパティ ファイルから値を読み取り、そのファイルからこれらの値を XML テンプレートに入力しようとしています。この例の目標は、プロパティ ファイルで定義された設定を使用して、Tomcat の複数のインスタンスを起動できるようにすることです。Apache Commons 構成フレームワークの怪物にもかかわらず、さまざまな構成タイプをすぐに読み取り/書き込み/検証できるため、選択されました。
テンプレートは、Tomcat の server.xml の一部です。
プロパティファイル (tomcat.properties としましょう):
DefaultConfigurationBuilder を使用して、これらのファイルを構成に結合します。定義ファイルが動的に作成されています。コード:
保存されたファイルは、上記の server.xml と同じです。例 port="${tomcat.server.port}" プロパティファイルの値で保存する方法はありますか?
maven - Maven Web プロジェクトで Commons Configuration を使用して config.properties を読み取れない
Commons-configuration api を使用して、maven Web プロジェクトの src/main/resources フォルダーに配置された config.properties ファイルを読み込もうとしています。通常のMavenプロジェクトでは問題なく使用できますが、Webプロジェクトではこれがうまくいきません。ここに私のpom.xmlがあります
そして、私は以下のコードを使用してこのファイルを読んでいます
pom.xml で何か見逃したことがありますか。助けてください!
java - apache commonsを使用してストリームからxml構成をロードする方法は?
Apache Commons 構成 1.10 を使用して xml 構成を管理したいと考えています。
私の構成はリモートサーバーにあるため、ストリームから読み取る必要があります。
そのようなものには、ストリームから読み取るjava.util.Properties
メソッドがあります。load
ドキュメントを確認すると、私を助けることができるものは何も見つかりませんでした。
必要な出力を取得する方法を教えてください。
java - Apache commos 構成を使用して xsd に対して xml を検証する
私はXMLの初心者です。
構成に Apache Commons XMLConfiguration を使用しています。
スキーマベースの検証が必要です。
xsd は、私の Java プロジェクトの resources フォルダーにあります。
xml と xsd が同じ場所にありません。
ドキュメントに従ってください(DTDの例のみを報告しています)。次のコードを生成します。
次の例外が発生します。
私のconfig.xsd:
私のconfig.xml
誰でも私を助けることができますか?
java - Apache commons config: デフォルトから構成ファイルを生成
アプリケーションを 1 つの jar で配布したいと考えています。つまり、外部ファイルを同梱したくないということです。これには、プロジェクトにデフォルトの構成ファイルを同梱したくないことも含まれます。
JDOM2 の実装を使用して基本的な XML 構造を構築するか、クラスパスからファイル システムにコピーすることはできますが、Commons Configuration によって実装されたすぐに使用できるバリアントはありますか?
既存の構成ファイルの読み取りと処理について説明しているオンライン ドキュメントしか見つかりませんでした。
このコードが多くのキー -> 値のペアを取り込んでから、新しい構成を生成すると想像できますが、これは可能ですか?
XML ファイルに代わるものを提供しないでください。この質問には、私が尋ねた実装について具体的に答えてください。知っている場合は、Commons Configuration の代替案を提案して、私が必要とすることを行うことができます。