Javaアプリケーション(特に私の統合テスト)を構成しようとしていますが、まったく成功しませんでした。私はもともと、問題なくロードして使用できる単一のXMLConfigurationを持っていました。私のディレクトリの設定は次のようになります。Apache Commonsの設定 - 設定ファイルをロード/使用できない
- SRC
- テスト
- javaの
- mypackageと
- リソースを
- javaの
- テスト
以前は、リソースディレクトリにmyconfig.xmlファイルがありました。私は、ユーザーが/ etcまたは/家庭または任意に設定ファイルを書き込むことにより、アプリケーション自身を構成することができるようにそれを作るしようとしている今
private static XMLConfiguration configuration = null;
public static void configure() {
try {
configuration = new XMLConfiguration("myconfig.xml");
}
catch (ConfigurationException e) {
System.err.println(e);
}
}
ので、私は新しいを作った:私はそうのようにそれにそれをロードしましたコンフィグ-のtest.xmlと呼ばれる同じ場所にファイル:
<?xml version="1.0" encoding="ISO-8859-1"?>
<configuration>
<!-- Attempt to load configuration provided on the system -->
<xml fileName="/etc/myconf/myconfig.xml" config-optional="true" />
<!-- Load default configuration from the classpath -->
<xml fileName="myconfig.xml" />
</configuration>
ファイル/etc/myconf/myconfig.xmlは存在しませんが、それはそれは、オプションの作りの全体のポイントです。ドキュメントをどのように処理するかなど、設定をロードするためのいくつかの異なる方法を試しました。http://commons.apache.org/configuration/userguide/howto_configurationbuilder.html私は現在持っていることは以下の通りです:私は私の統合テストを実行すると
private static CombinedConfiguration configuration = null;
public static void configure() {
try {
DefaultConfigurationBuilder builder =
new DefaultConfigurationBuilder("config-test.xml");
configuration = builder.getConfiguration(true);
System.err.println("Yay");
}
catch (ConfigurationException e) {
System.err.println("Herp");
}
catch (Exception e) {
System.err.println("Derp");
}
}
、私は何もイェーイを見ていない、私はHerpのを見ていないと私はDERPを見ていません。物を読み込もうとする前にprintln
を置くと、それが印刷されてconfigure
が呼び出されます。私はコモンズの設定金額から取得出力:
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running TestSuite
13:36:57.752 [main] DEBUG o.a.c.c.ConfigurationUtils - ConfigurationUtils.locate(): base is null, name is config-test.xml
13:36:57.753 [main] DEBUG o.a.c.c.DefaultFileSystem - Could not locate file config-test.xml at null: no protocol: config-test.xml
13:36:57.756 [main] DEBUG o.a.c.c.ConfigurationUtils - Loading configuration from the context classpath (config-test.xml)
13:36:57.766 [main] DEBUG o.a.c.c.DefaultConfigurationBuilder - Creating configuration null with name null
13:36:57.795 [main] DEBUG o.a.c.c.ConfigurationUtils - ConfigurationUtils.locate(): base is null, name is config-test.xml
13:36:57.795 [main] DEBUG o.a.c.c.DefaultFileSystem - Could not locate file config-test.xml at null: no protocol: config-test.xml
13:36:57.796 [main] DEBUG o.a.c.c.ConfigurationUtils - Loading configuration from the context classpath (config-test.xml)
13:36:57.800 [main] DEBUG o.a.c.c.DefaultConfigurationBuilder - Creating configuration null with name null
Tests run: 56, Failures: 2, Errors: 0, Skipped: 16, Time elapsed: 2.589 sec <<< FAILURE!
Results :
Failed tests: initialize(mypackage.ImportTestIT): org/apache/commons/beanutils/PropertyUtils
initialize(mypackage.TransferTestIT): org/apache/commons/beanutils/PropertyUtils
Tests run: 56, Failures: 2, Errors: 0, Skipped: 16
は、これらの方法は、ちょうどロードされた構成からデータを取得しようとし、その後configure
を呼び出すとされている初期化します。私はこれで数時間働いていて、実際にもう一組の目を使うことができました。何か案は?私はこれに影響を与えることは言及していないと私は変更することができた何かがありますか?ありがとう。
編集#1(13:58):確認々BeanUtilsを行った後、クラスパス上にあった、私は今ようにというように
Running TestSuite
14:00:16.088 [main] DEBUG o.a.c.c.ConfigurationUtils - ConfigurationUtils.locate(): base is null, name is config-test.xml
14:00:16.089 [main] DEBUG o.a.c.c.DefaultFileSystem - Could not locate file config-test.xml at null: no protocol: config-test.xml
14:00:16.093 [main] DEBUG o.a.c.c.ConfigurationUtils - Loading configuration from the context classpath (config-test.xml)
14:00:16.103 [main] DEBUG o.a.c.c.DefaultConfigurationBuilder - Creating configuration null with name null
14:00:16.178 [main] DEBUG o.a.c.c.ConfigurationUtils - ConfigurationUtils.locate(): base is file:///home/pgarrity/projects/myproject/target/test-classes/config-test.xml, name is /etc/myconf/myproject/myconfig.xml
14:00:16.179 [main] DEBUG o.a.c.c.DefaultFileSystem - Could not locate file /etc/myconf/myproject/myconfig.xml at file:///home/pgarrity/projects/myproject/target/test-classes/config-test.xml: /etc/myconf/myproject/myconfig.xml (No such file or directory)
14:00:16.181 [main] DEBUG o.a.c.c.DefaultConfigurationBuilder - Load failed for optional configuration xml: Cannot locate configuration source /etc/myconf/myproject/myconfig.xml
14:00:16.185 [main] WARN o.a.c.c.DefaultConfigurationBuilder - Internal error
org.apache.commons.configuration.ConfigurationException: Cannot locate configuration source /etc/myconf/myproject/myconfig.xml
at org.apache.commons.configuration.AbstractFileConfiguration.load(AbstractFileConfiguration.java:259) ~[commons-configuration-1.8.jar:1.8]
at org.apache.commons.configuration.AbstractFileConfiguration.load(AbstractFileConfiguration.java:238) ~[commons-configuration-1.8.jar:1.8]
で始まり、スタックトレースの残忍な爆発を取得します。 ..しかし、私は今、「よー」と思う。
今私が得意でないことは、私の非オプション設定ソースを探しているように見えないか、見た目に言わなかった場所にいると仮定しているようです。
編集#2: 私は私の出力を介してビットより多くの、私は最終的に正しいファイルを読み込むように見えたことがわかっコモンズからの苦情に埋もれて見えました。私はそれが働くかもしれないと思う?多分、このようにロードするとプロパティへの私のパスが変わります。私は試してみるべきことがいくつかあります。とにかく、私が尋ねた問題は修正されました。助けてくれてありがとう。
奇妙な、この綿密なメッセージが表示されます。私は私のために私の依存関係を扱うのに慣れていましたが、そこにはありませんでした - 私はそれを特に依存関係を追加し、それは間違いなく何かを変えました。ありがとう! –
私はこのクラスのutilsをクラスパスに持っていますが、問題はまだ@Bozhoです – Napster