私はJavaアプリケーションを他のコンピュータに簡単にデプロイするための作業をしており、これを行うためのantスクリプトを作成しています。クラスパスからコンフィグレーションファイルをロードする
jarのマニフェストファイルに指定されているクラスパスにリストされているリソースを読み込めません。
フォルダ構造のようになります。
/MyProgram.jar
/lib/<dependencies>
/config/configuration.xml
私は私の人生のためのクラスローダを使用してconfiguration.xmlファイルにアクセスすることはできません。すべての依存関係とともに、マニフェストファイルへのClass-Pathエントリに明示的にリストされています。以下のすべての値の文字列としてXMLNAMEで
this.xml = Thread.currentThread().getContextClassLoader()
.getResourceAsStream(xmlName);
this.xml = this.getClass().getResourceAsStream(xmlName);
:
は、私は次の多くの亜種を試してみた
"config/configuration.xml"
"configuration.xml"
"config.configuration.xml"
これに関連して、私はまた、log4j.propertiesを持っていますconfigディレクトリ内のファイル。 log4jを取得するにはどうすればよいですか?他の参考文献によると、クラスパスに入る必要があり、それもjarのマニフェストファイルに明示的に指定されています。誰かが私を正しい方向に向けることができますか?
アップデート:ここで
はクラスパスから実際のエントリです:
Class-Path: <snip dependencies> config/configuration.xml config/log4j.properties
クラスパスエントリがフォルダになりました!これにより、log4jは設定ファイルを取得します。ありがとう! 私はそれをjarファイルにパッケージ化しますが、プログラムがラボコンピュータに置かれた後で構成を編集できるようにしたいと考えています。 – Collin